Leer en inglés

Compartir a través de


Error del compilador CS0844

No se puede usar la variable 'name' antes de declararla. La declaración de la variable local oculta el campo 'name'.

Un identificador solo puede tener un significado en un bloque determinado. Las variables locales que tengan el mismo nombre que los campos de clase pueden ocultar el campo si introducen un segundo significado para el identificador. Por lo tanto, el compilador genera un error cuando se hace referencia a un campo de clase en un método y, después, se declara una variable local con el mismo nombre.

Para corregir este error

  • Use this.num para hacer referencia al campo de clase.

  • Asigne a la variable local un nombre diferente al del campo de clase.

Ejemplo

El código siguiente genera el error CS0844:

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

Corrija el error mediante this.num para hacer referencia al campo de clase

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

Corrija el error asignando a la variable local un nombre diferente del campo de clase

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