Leggere in inglese

Condividi tramite


Errore del compilatore CS0841

Non è possibile usare la variabile locale 'name' prima che sia dichiarata.

Prima di poter essere usata, una variabile deve essere dichiarata.

Esempio di variabile usata prima della dichiarazione

L'esempio seguente genera l'errore CS0841:

// cs0841.cs
using System;

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

Correggere l'errore spostando la dichiarazione prima dell'utilizzo

Spostare la dichiarazione di variabile prima della riga in cui si verifica l'errore.

using System;  

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

Esempio di ombreggiatura di una variabile di un tipo

Nell'esempio seguente, l’intento era quello di confrontare parameter con MyEnum.A. Poiché una variabile locale dichiarata successivamente con lo stesso nome di tipo, nasconde il tipo MyEnum e MyEnum in questo metodo non fa più riferimento a enum, ma fa riferimento alla variabile locale dichiarata.

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