接下來是一個C#經常被忽略的特性,匿名方法。雖然匿名方法很少用到,但是知道總比不知道的好。以delegate為例,我們平時都是賦予delegate具體的方法,
本篇介紹Linq的延遲執行和查詢非泛型集合。延遲執行從Linq的查詢過程看,不斷有新類型、集合的構建、釋放,感覺效率不高,但Linq的延遲執行機制將大大改善常
從輸出結果可以看出,查詢時並沒有立即計算結果,而是輸出時才進行計算。其實在構造查詢語句時,只是傳遞的相應操作的委托,並沒有真正執行查詢操作,真正的執行是在 I
為了更清楚的演示延遲執行的執行時間,自己實現 IEnumerator<T> 接口,通過下面代碼可以看出,查詢操作是在 GetEnumerator(
查詢非泛型集合在 .Net1.X 時代不支持泛型,構造集合時都要轉換或裝箱為Object類型,Linq 查詢是以泛型為基礎的,在老系統升級或整合時要進行非泛型
等效的擴展方法調用實現為:var result = DataSource.Scores.GroupBy(score => score.StudentID
左外連接當右側的連接的右側沒有左側對應的元素時,內連接會忽略左側元素。要想保留左側元素,可以使用做外連接。右側被置為默認值,如:引用類型被置為空。示例:var
這裡簡單介紹Linq的投影、篩選和排序子句。Selectselect 在一個集合序列按給定的條件進行投影,select 可以返回組合的篩選結果,返回匿名類型,
如自動屬性Int1生成了私有字段<Int1>k__BackingFIEld,盡管在C#裡這不是合法的標識符,但在IL裡是合法的。生成了兩個方法:s
構造實例對其初始化。var t0 = new Test1 { String1 = http://xianfen.Net, Int1 = 0 };var t1
Func<[...,]T> 最後一個參數為返回值類型,其他的為方法參數類型,相當於:T function([...]){return T的實例;}
反射(Reflection)是C#裡很重要的一個特性,其它語言也有這個特性,比如JAVA。反射這個特性是很實用的,這個到底有多實用呢,我也說不清,如果使用過s