Error del compilador CS0135

Actualización: noviembre 2007

Mensaje de error

'declaración1' entra en conflicto con la declaración 'declaración2'
'declaration1' conflicts with the declaration 'declaration2'

El compilador no permite ocultar nombres, lo cual suele causar errores lógicos en el código.

Ejemplo

El siguiente código genera el error CS0135:

// CS0135.cs
public class MyClass2
{
   public static int i = 0;

   public static void Main()
   {
      {
         int i = 4;
         i++;
      }
      i = 0;   // CS0135
   }
}

En Especificación del lenguaje C#, sección 7.5.2.1:

Por cada repetición de un identificador dado como un nombre simple (simple-name) en una expresión o declarador, en el espacio de declaración de variables locales (§CNDJ6nn5us4RjIIAqgBLqQsCAAAACAAAAA4AAABfAFIAZQBmADQANgAxADYAMgAyADEAMwA4AAAA REF _Ref461622138 \r \h 3.3) envolvente inmediato de dicha repetición, todas las demás repeticiones del mismo identificador como nombre simple (simple-name) en una expresión o declarador deben hacer referencia a la misma entidad. Esta regla garantiza que el significado de un nombre sea siempre el mismo dentro de un bloque dado, un bloque switch, una instrucción for, foreach o using o una función anónima.