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;
}
}