天天看點

Entity Framework 6.0 源碼解讀筆記(一)

很久沒學習C#新的文法了,讀到這段代碼時基本上懵了,隻知道是Lambda表達式,但是比我平時所使用Lambda表達式可複雜多了。

首先,我們來看GetElementFunction()方法,它傳回的是一個方法委托,該委托的具有一個參數(即IEnumerable<TResult>)并傳回一個指定類型的值(即TResult類)

第①處代碼分兩步執行,第1步執行GetElementFunction<TResult>(queryRoot),我們假定執行的分支為第②處代碼,那麼實際傳回的Lambda表達:(sequence)

=> { return sequence.First(); };

該表達式可解讀為下面的方法

第2步,調用Lambda表達式的匿名方法,并将query參數傳給它,Lambda表達式中sequence變量即等價于傳入的query變量,相當于調用AnonymousMethod(query)

總結:重點代碼是上面标注了①②的兩行,執行這條分支的代碼相當于調用query.First();