ホームページ >バックエンド開発 >C++ >暗黙的に型指定された変数 (「var」) は、明示的な型宣言がなければ匿名メソッドを保持できないのはなぜですか?

暗黙的に型指定された変数 (「var」) は、明示的な型宣言がなければ匿名メソッドを保持できないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-31 19:25:10604ブラウズ

Why Can't Implicitly Typed Variables ('var') Hold Anonymous Methods Without Explicit Type Declaration?

暗黙の型 'Var' に推論される変数に匿名メソッドを割り当てられないのはなぜですか?

次のコードを考えてみましょう:

Func<string, bool> comparer = delegate(string value) {
    return value != "0";
};

このコードは、推論された型であるため、正常にコンパイルされます。ラムダ式は Func デリゲートです。ただし、次のコードはコンパイルできません:

var comparer = delegate(string value) {
    return value != "0";
};

この場合、コンパイラーはラムダ式のデリゲート型を推論できません。これは、推論できるデリゲート型が無数にあり、コンパイラにはどれが意図されているのかを判断するための十分なコンテキストがないためです。

たとえば、ラムダ式は Func expression>

この問題を解決するには、ラムダ式のデリゲート型を明示的に指定します。ラムダ式:

var comparer = (Func<string, bool>)delegate(string value) {
    return value != "0";
};

この変更により、コードは正常にコンパイルされ、ラムダ式の推論された型はラムダ式は Func になります。

以上が暗黙的に型指定された変数 (「var」) は、明示的な型宣言がなければ匿名メソッドを保持できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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