ホームページ >バックエンド開発 >C++ >C# で匿名メソッドを `var` に直接割り当てることができないのはなぜですか?

C# で匿名メソッドを `var` に直接割り当てることができないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-31 01:19:10255ブラウズ

Why Can't Anonymous Methods Be Assigned Directly to `var` in C#?

匿名メソッドを var に代入できない理由

提供されたコードでは、匿名メソッドの var 変数への代入がコンパイルに失敗します。デリゲート型の推論には曖昧さがあるため。

匿名メソッドを割り当てることができるFunc などの型をデリゲートするまたはアクション。ただし、var に代入する場合、コンパイラはどのデリゲート型を使用するかを決定できません。これは、考えられるデリゲートの型が無限にあり、特にラムダの場合、デリゲート形式を使用することを目的としているのか、式ツリー形式を使用することを目的としているのかが不明瞭であるためです。

さらに、コンパイラがデリゲート型の場合、不一致が発生する可能性があります。たとえば、var 割り当てが正常にコンパイルされたと仮定すると、次のコードは意味を失います。

var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) {
    return false;
};

これは、Func<> が原因です。 .NET 3.5 では最大 4 つの引数しか許可されないため、型推論は実際の動作と一致しません。

この曖昧さを解決するには、匿名メソッドを変数に割り当てるときにデリゲート型を明示的に指定する必要があります。これにより、コードの明確さと一貫性が確保されます。

以上がC# で匿名メソッドを `var` に直接割り当てることができないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。