Lezen in het Engels

Delen via


Compilerfout CS0841

Kan geen lokale variabele 'naam' gebruiken voordat deze wordt gedeclareerd.

Een variabele moet worden gedeclareerd voordat deze wordt gebruikt.

Voorbeeld van een variabele die vóór de declaratie wordt gebruikt

In het volgende voorbeeld wordt CS0841 gegenereerd:

// cs0841.cs
using System;

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

Corrigeer de fout door de declaratie vóór gebruik te verplaatsen

Verplaats de variabeledeclaratie vóór de regel waar de fout optreedt.

using System;  

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

Voorbeeld van een variabele die een type schaduwt

In het volgende voorbeeld werd de intentie vergeleken parameter met MyEnum.A. Omdat een lokale variabele die later met dezelfde typenaam is gedeclareerd, het type MyEnum schaduwt en MyEnum in deze methode niet langer verwijst naar de enum, maar verwijst naar de gedeclareerde lokale variabele.

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