Ler em inglês

Compartilhar via


Erro do Compilador CS0844

Não é possível usar a variável local "name" antes de declará-la. A declaração da variável local oculta o campo "name".

Um identificador pode ter apenas um significado em determinado bloco. Variáveis locais que têm o mesmo nome que campos de classe podem ocultar o campo introduzindo um segundo significado para o identificador. Portanto, o compilador gera um erro quando você se refere a um campo de classe em um método e, em seguida, declara uma variável local com o mesmo nome.

Para corrigir este erro

  • Use this.num para fazer referência ao campo de classe.

  • Dê à variável local um nome diferente do campo de classe.

Exemplo

O seguinte código gera o erro CS0844:

C#
class Test  
    {  
        int num;  
        public void TestMethod()  
        {  
            num = 5; // CS0844  
            int num = 6;
        }  
        public static int Main()  
        {  
            return 1;  
        }  
    }  

Corrigir o erro usando this.num para se referir ao campo de classe

C#
class Test  
    {  
        int num;  
        public void TestMethod()  
        {  
            this.num = 5; // Error fixed.
            int num = 6;
        }  
        public static int Main()  
        {  
            return 1;  
        }  
    }  

Corrigir o erro atribuindo à variável local um nome diferente do campo de classe

C#
class Test  
    {  
        int num;  
        public void TestMethod()  
        {  
            num = 5; // Error fixed.
            int num2 = 6;
        }  
        public static int Main()  
        {  
            return 1;  
        }  
    }