匿名メソッドを var に割り当てることができないのはなぜですか?
C# では、ラムダ式とも呼ばれる匿名メソッドは、簡潔なメソッドを提供します。インライン関数を定義する柔軟な方法。ただし、名前付きデリゲート型とは異なり、匿名メソッドを var として暗黙的に型付けされた変数に直接割り当てることはできません。コンパイラは、匿名メソッドを暗黙的に型指定されたローカル変数に割り当てることができないことを示すエラーを生成します。
この制限の根本的な理由は、型推論プロセスによって生じるあいまいさです。 var を使用する場合、コンパイラは割り当てられた式に基づいて変数の型を決定します。ただし、匿名メソッドの場合、それらが表すことができるデリゲートの型は無限にあります。これにより、コンパイラは目的のデリゲート型を推測する必要があるため、一貫性のない動作や潜在的なエラーが発生します。
さらに、ラムダ式を使用して、デリゲート型として表されない式ツリーを作成することもできます。匿名メソッドに var が許可されると、割り当てられたラムダがデリゲートであるか式ツリーであるかが不明瞭になる、混乱を招く状況が発生します。
したがって、一貫性を維持し、曖昧さを避けるために、C# 言語では次のことが必要になります。匿名メソッドを var 変数に割り当てる前に、明示的にデリゲート型に割り当てる必要があります。これにより、コンパイラはデリゲート型を検証し、割り当てられた式が期待される型署名と一致することを確認できます。
以上がC# で匿名メソッドの宣言に `var` を使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。