Ler em inglês

Partilhar via


Erro do compilador CS0844

Não é possível usar a variável local 'name' antes de ser declarada. A declaração da variável local oculta o campo 'nome'.

Um identificador só pode ter um significado num determinado bloco. As variáveis locais que têm o mesmo nome que os 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 pelo 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 código a seguir gera CS0844:

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

Corrija o erro usando this.num para fazer referência ao campo de classe

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

Corrija o erro dando à variável local um nome diferente do campo de classe

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