Share via


Compilerfehler CS0844

Die lokale Variable "Name" kann erst verwendet werden, nachdem sie deklariert wurde. In der Deklaration der lokalen Variablen ist das Feld "Name" verborgen.

Ein Bezeichner kann in einem bestimmten Block nur eine Bedeutung haben. Lokale Variablen, die den gleichen Namen wie Klassenfelder haben, können das Feld verbergen, indem sie eine zweite Bedeutung für den Bezeichner einführen. Aus diesem Grund generiert der Compiler beim Verweisen auf ein Klassenfeld in einer Methode einen Fehler und deklariert dann eine lokale Variable mit demselben Namen.

So beheben Sie diesen Fehler

  • Verwenden Sie this.num , um auf das Klassenfeld zu verweisen.

  • Geben Sie der lokalen Variable einen anderen Namen als dem Klassenfeld.

Beispiel

Durch den folgenden Code wird der Fehler CS0844 ausgelöst:

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

Korrigieren des Fehler, indem this.num so verwendet wird, dass auf das Klassenfeld verwiesen wird

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

Korrigieren des Fehlers, indem der lokalen Variablen ein anderer Name als dem Klassenfeld gegeben wird

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