您好,登錄后才能下訂單哦!
這篇文章主要介紹“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>
免責(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)容。