コンパイラ エラー CS0844

宣言する前にローカル変数 'name' を使用することはできません。 ローカル変数の宣言によって、フィールド 'name' が非表示になります。

識別子は、所定のブロックで 1 つの意味のみを持つことができます。 クラス フィールドと同じ名前を持つローカル変数は、識別子の 2 番目の意味を導入することによって、フィールドを非表示にできます。 したがって、コンパイラは、メソッドでクラス フィールドを参照し、同じ名前でローカル変数を宣言すると、エラーを生成します。

このエラーを解決するには

  • this.num を使用して、クラス フィールドを参照します。

  • ローカル変数にクラス フィールドとは別の名前を付けます。

次のコードでは CS0844 が生成されます。

class Test  
    {  
        int num;  
        public void TestMethod()  
        {  
            num = 5; // CS0844  
            int num = 6;
        }  
        public static int Main()  
        {  
            return 1;  
        }  
    }  

エラーを修正するには、this.num を使用してクラス フィールドを参照します

class Test  
    {  
        int num;  
        public void TestMethod()  
        {  
            this.num = 5; // Error fixed.
            int num = 6;
        }  
        public static int Main()  
        {  
            return 1;  
        }  
    }  

エラーを修正するには、ローカル変数にクラス フィールドとは異なる名前を指定します

class Test  
    {  
        int num;  
        public void TestMethod()  
        {  
            num = 5; // Error fixed.
            int num2 = 6;
        }  
        public static int Main()  
        {  
            return 1;  
        }  
    }