Lire en anglais

Partager via


Erreur du compilateur CS0841

Impossible d’utiliser la variable locale 'name' avant de la déclarer

Pour pouvoir être utilisée, une variable doit être préalablement déclarée.

Exemple de variable utilisée avant la déclaration

L’exemple suivant génère l’erreur CS0841 :

// cs0841.cs
using System;

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

Corriger l’erreur en déplaçant la déclaration avant l’utilisation

Déplacez la déclaration de variable avant la ligne où l’erreur se produit.

using System;  

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

Exemple de variable dissimulant un type

Dans l’exemple suivant, l’intention était de comparer parameter à MyEnum.A. Étant donné qu’une variable locale est déclarée ultérieurement avec le même nom de type, elle dissimule le type MyEnum et MyEnum dans cette méthode ne fait plus référence à la enum, mais à la variable locale déclarée.

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