您好,登錄后才能下訂單哦!
這篇文章主要介紹“Linq本質是什么”,在日常操作中,相信很多人在Linq本質是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Linq本質是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
1.匿名類型
private static void AnonymousType() { var v = new { Name = "張三", Sex = true }; //無須顯示聲明一個類,而且在初始化器里面可以獲取上下文的變量——閉包 Console.WriteLine(v.Name); }
Linq本質:有了匿名類型后我們不需要顯示的聲明一個類型了,這個類型由C#編譯器自動生成,而且利用了初始化器和var的新特性對Linq的意義:和初始化器結合起來構造查詢結果集合里面的新元素類型。
2.擴展方法
比如我們現在想給int類型增加(擴展)一個方法,判斷一個整數自身是否偶數,我們期望的語法是這樣的:
private static void ExtendMethod() { int i = 2; Console.WriteLine(i.IsEven()); }
注意原來int原來是沒有IsEven()這個方法的,要實現這個方法,必須寫一個靜態類和一個靜態方法:
static class MyExtention { public static bool IsEven(this int num) //this 表示針對int的實例和索引器的this的含義是一樣的,int表示給int這種類型進行擴展 { return num % 2 == 0; } }
Linq本質:編譯i.IsEven()的本質是C#編譯器生成了了MyExtention.IsEven(i)的代碼,實際上仍然沒有破壞類型的結構,并不是真的象語法那樣平白無故給int增加了一個IsEven()方法,和設計模式里面的Visitor模式動態注入方法還是有區別的。
到此,關于“Linq本質是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。