Error del compilador CS0136

Actualización: noviembre 2007

Mensaje de error

No se puede declarar una variable local denominada 'var' en este ámbito, porque daría un significado diferente a 'var', que ya se utiliza en un ámbito 'principal o actual/secundario' con otra denotación
A local variable named 'var' cannot be declared in this scope because it would give a different meaning to 'var', which is already used in a 'parent or current/child' scope to denote something else

Una declaración de variable oculta otra declaración que de otro modo quedaría dentro de ámbito. Cambie el nombre de la variable que se declara en la línea que generó el error CS0136.

Ejemplo

El siguiente código genera el error CS0136:

// CS0136.cs
namespace MyNamespace
{
   public class MyClass
   {
      public static void Main()
      {
         int i = 0;
         {
            char i = 'a';   // CS0136, hides int i
         }
         i++;
      }
   }
}

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.