Error del compilador CS0844

Actualización: noviembre 2007

Mensaje de error

No se puede usar la variable local 'nombre' antes de declararla. La declaración de la variable local oculta el campo 'nombre'.
Cannot use local variable 'name' before it is declared. The declaration of the local variable hides the field 'name'.

Un identificador sólo puede tener un significado en un bloque determinado. Las variables locales que tienen el mismo nombre que los campos de clase pueden ocultar los campos, ya que introducen un segundo significado para el identificador. Por consiguiente, el compilador genera un error al hacer referencia a un campo de clase en un método y declarar después una variable local con el mismo nombre.

Para corregir este error

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

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

Ejemplo

El código siguiente genera el error CS0844:

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