0

重複の可能性:
暗黙の型付け。なぜローカル変数だけですか?

c# はこれを許可します:

public class MyClass
{
    public void Foo()
    {
        var q = new MyObject();
    }
}

しかし、これは許可されません:

public class MyClass
{
    var q = new MyObject();

    public void Foo()
    {
        // ...
    }
}

これには理由がありますか?ありがとう。

4

1 に答える 1

4

ローカル変数には型推論のみを使用できます。

varキーワードは、「メソッドスコープで宣言された」変数の型を推測します。言語に関してはvar、「暗黙的に型指定されたローカル変数宣言」(C#言語仕様8.5.1)を定義するために使用されます。この言語はvarローカル変数にのみ使用され、タイプレベルの変数には使用されません。

理由については、C#の設計者がどのように意図したかが問題になります。特定のシナリオについてのみ、すべての使用法のタイプを推測することを意図したものではありません。Eric Lippertは、これが行われた理由を説明し、匿名タイプの公開、複数の初期化子のチェーンなど、使用法の拡大が引き起こす可能性のある多くの潜在的な落とし穴を提供しました。

于 2012-09-18T18:24:58.560 に答える