委託呼叫:Lambda 表示法與委託關鍵字
在C# 中,lambda 表達式和委託關鍵字提供了用於建立匿名方法的替代語法。編譯後,以下兩種符號之間是否有明顯差異?
和
答案:沒有功能差異
在二進位級別,lambda 表示法和delegate 關鍵字都會產生等效的匿名委託。它們可以互換呼叫並表現出相同的運行時行為。
其他注意事項:
- 將 lambda 指派給委託類型(例如,Func 或 Action)時),直接建立匿名委託。
- 另一方面,將 lambda 指派給表達式類型會產生表達式樹而不是匿名委託。隨後可以編譯此表達式樹以建立匿名委託。
表達式樹與 LINQ:
在 LINQ 上下文中,理解表達式樹至關重要。記憶體中的 LINQ 操作(例如,使用 Enumerable)使用委託,而具有外部資料來源(例如 SQL)的 LINQ 操作則使用表達式樹。
有關表達式樹的更多見解和資源,請參閱以下連結:
- [System.Linq.Expression.Expression(TDelegate)](https://docs. microsoft.com/en-us/dotnet/api/system.linq.expressions.expression)
- [具有委託(System.Func) 的Linq 記憶體與具有表達式(System.Linq.Queryable)的Linq to SQL](https://stackoverflow.com/questions/9289889/linq-in-memory -with-delegates-system-func-vs-linq-to-sql-with-expressions-syst)
- [ScottGu 的解釋](https://weblogs.asp.net/scottgu/a-向前看linq)
以上是Lambda 表示法和 C# 中的 delegate 關鍵字之間有功能差異嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!