C# ではデリゲート キーワードとラムダ表記は機能的に同一ですか?

Linda Hamilton
リリース: 2024-11-04 01:32:03
オリジナル
923 人が閲覧しました

Are delegate keywords and lambda notation functionally identical in C#?

デリゲート キーワードとラムダ表記法

C# では、2 つのラムダ式の等価性に関して一般的な疑問が生じます。

<code class="csharp">delegate { x = 0; }

() = > { x = 0 }</code>
ログイン後にコピー

それらは機能的に同一であるかどうかコンパイルされましたか?

答え:
要するに、いいえ。これらは構文的には同等ですが、結果のデリゲートの型が異なります。

Delving Deeper:
delegate キーワードは伝統的に匿名のデリゲートを作成しますが、delegate キーワードを指定してラムダを使用すると、匿名の代表者も。ただし、ラムダを Expression 型に割り当てると、代わりに式ツリーが作成され、後で匿名デリゲートにコンパイルできます。

高度な考慮事項:
これらの表記法の選択は、次によって異なります。使用目的:

  • デリゲート タイプに割り当て (例: Func、Action):ランタイム コード生成には匿名デリゲートを使用します。
  • 式の種類に割り当て: 遅延実行またはカスタマイズされたコード生成には式ツリーを使用します。

以上がC# ではデリゲート キーワードとラムダ表記は機能的に同一ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート