Błąd kompilatora CS0841

Nie można użyć zmiennej lokalnej "name", zanim zostanie zadeklarowana.

Przed jego zastosowaniem należy zadeklarować zmienną.

Przykład zmiennej używanej przed deklaracją

Poniższy przykład generuje CS0841:

// cs0841.cs
using System;

public class Program
{
    public static void Main()
    {
        j = 5; // CS0841
        int j;
    }
}

Popraw błąd, przenosząc deklarację przed użyciem

Przenieś deklarację zmiennej przed wierszem, w którym występuje błąd.

using System;  

public class Program
{
    public static void Main()
    {
        int j;
        j = 5;
    }
}

Przykład zmiennej w tle typu

W poniższym przykładzie intencja była porównywana parameter z MyEnum.A. Ponieważ zmienna lokalna zadeklarowana później o tej samej nazwie typu, w tle typ MyEnum i MyEnum w tej metodzie nie odwołuje się już do zmiennej enum, ale odwołuje się do zadeklarowanej zmiennej lokalnej.

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