デリゲートキーワードとラムダ表記 質問する

デリゲートキーワードとラムダ表記 質問する

コンパイルされると、次の違いが生じます。

delegate { x = 0; }

そして

() => { x = 0 }

?

ベストアンサー1

短い答え:いいえ。

関係ないかもしれない長い回答:

  • ラムダをデリゲート型 ( やFuncなどAction) に割り当てると、匿名デリゲートが取得されます。
  • ラムダを Expression 型に割り当てると、匿名デリゲートではなく式ツリーが生成されます。式ツリーは匿名デリゲートにコンパイルできます。

編集: ここに Expressions へのリンクがいくつかあります。

  • System.Linq.Expression.Expression(TDelegate)(ここから始める)。
  • デリゲート(System.Funcなど)を使用したLinqインメモリは、System.Linq.列挙可能. Linq to SQL(および他のあらゆるもの)の式の使用System.Linq.クエリ可能これらのメソッドのパラメータを確認してください。
  • アンScottGuからの説明簡単に言うと、Linq in-memory はクエリを解決するための匿名メソッドをいくつか生成します。Linq to SQL はクエリを表す式ツリーを生成し、そのツリーを T-SQL に変換します。Linq to Entities はクエリを表す式ツリーを生成し、そのツリーをプラットフォームに適した SQL に変換します。

おすすめ記事