Ler em inglês

Compartilhar via


Erro do Compilador CS0841

Não é possível usar a variável local "name" antes de declará-la.

Uma variável deve ser declarada antes de ser usada.

Exemplo de variável usada antes da declaração

O seguinte exemplo gera o erro CS0841:

C#
// cs0841.cs
using System;

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

Corrigir o erro movendo a declaração antes do uso

Mova a declaração de variável para antes da linha em que o erro ocorre.

C#
using System;  

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

Exemplo de variável sombreando um tipo

No exemplo a seguir, a intenção era comparar parameter com MyEnum.A. Como uma variável local declarada posteriormente com o mesmo nome de tipo, ela sombreia o tipo MyEnum e MyEnum nesse método não se refere mais à enum, mas sim à variável local declarada.

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