CS0135 de erro do compilador

Mensagem de erro

'declaration1' está em conflito com a declaração 'declaration2'

O compilador não permite ocultar nomes, que geralmente leva a erros de lógica em seu código.

Exemplo

O exemplo a seguir gera CS0135:

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

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

From a Especificação da linguagem C#Seção 7.5.2.1:

Para cada ocorrência de um determinado identificador sistema autônomo um nome de simples em uma expressão ou declarador dentro do espaço de declaração de variável local (§CNDJ6nn5us4RjIIAqgBLqQsCAAAACAAAAA4AAABfAFIAZQBmADQANgAxADYAMgAyADEAMwA4AAAA REF _Ref461622138 \r \h 3.3) envolve imediatamente dessa ocorrência, todas sistema autônomo outras ocorrências do mesmo identificador sistema autônomo um nome de simples em uma expressão ou declarador deve se referir a mesma entidade.Esta regra assegura que o significado de um nome é sempre o mesmo em um determinado bloco, bloco comutador, para, demonstrativo foreach ou usando ou função anônima.