への匿名メソッド代入の制限 C# では、匿名メソッドはインライン関数を定義する便利な方法を提供します。これらのメソッドはデリゲート型に簡単に割り当てることができますが、それらを (var を使用して) 暗黙的に型指定された変数に割り当てようとすると、コンパイラ エラーが発生することがよくあります。
次のコード サンプルを検討してください。
Func<string, bool> comparer = delegate(string value) { return value != "0"; };
匿名メソッドが明示的に Func
var comparer = delegate(string value) { return value != "0"; };
エラー:
暗黙的に型指定されたローカル変数に匿名メソッドを割り当てることはできません。
このエラーは、コンパイラは匿名メソッドの型を推測できません。 Func、Predicate、Action、その他無数のデリゲート型を含む、表現できるデリゲート型は無限にあります。
さらに、コンパイラーが Func
var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) { return false; };
ただし、これは意味がありません。 .NET 3.5 では、デリゲートは最大 4 つの引数のみをサポートします。
この問題を解決し、匿名メソッドが正しいデリゲート型にコンパイルされるようにするには、代入ステートメントでデリゲート型を明示的に指定する必要があります。最初のコードサンプルに見られるように。
以上がC# で匿名メソッドを `var` に割り当てられないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。