Compilerfehler CS0841
Die lokale Variable "Name" kann erst verwendet werden, nachdem sie deklariert wurde.
Eine Variable muss deklariert werden, bevor sie verwendet werden kann.
Beispiel für eine vor der Deklaration verwendete Variable
Im folgenden Beispiel wird CS0841 generiert:
// cs0841.cs
using System;
public class Program
{
public static void Main()
{
j = 5; // CS0841
int j;
}
}
Korrigieren des Fehlers durch Verschieben der Deklaration vor die Verwendung
Verschieben Sie die Variablendeklaration vor die Zeile, in der der Fehler aufgetreten ist.
using System;
public class Program
{
public static void Main()
{
int j;
j = 5;
}
}
Beispiel für eine Variable, die ein Shadowing für einen Typ durchführt
Im folgenden Beispiel verglich die Absicht parameter
mit MyEnum.A
. Da später eine lokale Variable mit demselben Typnamen deklariert ist, führt sie ein Shadowing für den Typ MyEnum
durch, und MyEnum
in dieser Methode verweist nicht mehr auf enum
, sondern auf die deklarierte lokale Variable.
using System;
public enum MyEnum
{
A, B, C
}
public class C
{
public void M(MyEnum parameter)
{
// error CS0841: Cannot use local variable 'MyEnum' before it is declared
if (parameter == MyEnum.A)
{
return;
}
// Change the variable to 'myEnum' to avoid shadowing the 'MyEnum' type.
// This change also aligns with the C# coding conventions.
var MyEnum = parameter;
Console.WriteLine(MyEnum.ToString());
}
}