デリゲート キーワードとラムダ表記: それらは交換可能ですか?
現代のプログラミング言語では、同じ計算を表現する複数の方法が提供されることがよくあります。 C# では、ラムダ表記とデリゲート キーワードの 2 つの一般的なオプションが使用されます。この説明では、それらの等価性とニュアンスについて説明します。
ラムダ表記:
<code class="csharp">() => { x = 0; }</code>
デリゲート キーワード:
<code class="csharp">delegate { x = 0; }</code>
それらは本当に同等ですか?
結果として生じる動作に関して言えば、答えは断然ノーです。どちらの表記法でも、変数 x に 0 を割り当てる匿名デリゲートが生成されます。
微妙な違い (質問とは関係ありません):
ただし、次のような場合に注意することが重要です。ラムダをデリゲート型 (Func や Action など) に割り当てると、匿名のデリゲートを取得します。対照的に、それを Expression 型に割り当てると、代わりに式ツリーが取得され、これを匿名デリゲートにコンパイルできます。式ツリーは、匿名デリゲートのように直接実行されません。
式に関する追加リソース:
以上がラムダ表記とデリゲートのキーワード: これらは互換的に使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。