溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linq本質(zhì)是什么

發(fā)布時間:2021-12-02 09:19:34 來源:億速云 閱讀:108 作者:iii 欄目:編程語言

這篇文章主要介紹“Linq本質(zhì)是什么”,在日常操作中,相信很多人在Linq本質(zhì)是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Linq本質(zhì)是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

1.匿名類型

private static void AnonymousType()  {  var v = new { Name = "張三", Sex = true };  //無須顯示聲明一個類,而且在初始化器里面可以獲取上下文的變量——閉包  Console.WriteLine(v.Name);  }

Linq本質(zhì):有了匿名類型后我們不需要顯示的聲明一個類型了,這個類型由C#編譯器自動生成,而且利用了初始化器和var的新特性對Linq的意義:和初始化器結(jié)合起來構(gòu)造查詢結(jié)果集合里面的新元素類型。

2.擴(kuò)展方法

比如我們現(xiàn)在想給int類型增加(擴(kuò)展)一個方法,判斷一個整數(shù)自身是否偶數(shù),我們期望的語法是這樣的:

private static void ExtendMethod()  {  int i = 2;  Console.WriteLine(i.IsEven());  }

注意原來int原來是沒有IsEven()這個方法的,要實現(xiàn)這個方法,必須寫一個靜態(tài)類和一個靜態(tài)方法:

static class MyExtention  {  public static bool IsEven(this int num)  //this 表示針對int的實例和索引器的this的含義是一樣的,int表示給int這種類型進(jìn)行擴(kuò)展  {  return num % 2 == 0;  }   }

Linq本質(zhì):編譯i.IsEven()的本質(zhì)是C#編譯器生成了了MyExtention.IsEven(i)的代碼,實際上仍然沒有破壞類型的結(jié)構(gòu),并不是真的象語法那樣平白無故給int增加了一個IsEven()方法,和設(shè)計模式里面的Visitor模式動態(tài)注入方法還是有區(qū)別的。

到此,關(guān)于“Linq本質(zhì)是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI