Freigeben über


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