Erro do compilador CS0136

Uma variável local chamada 'var' não pode ser declarada nesse escopo porque daria um significado diferente para 'var', que já é usado em um escopo 'pai ou atual/filho' para indicar outra coisa

Uma declaração de variável oculta outra declaração que, de outra forma, estaria no escopo. Renomeie a variável declarada na linha que gerou CS0136.

Exemplo

O exemplo a seguir gera CS0136:

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

O compilador relata esse erro independentemente da ordem textual das declarações de variável, conforme mostrado no exemplo a seguir:

// CS0136.cs  
namespace MyNamespace  
{  
   public class MyClass  
   {  
      public static void Main()  
      {
         if (true)
         {  
            int i = 1;   // CS0136, hides i outside this block
         }
         int i = 0;   
         i++;  
      }  
   }  
}  

Na Especificação da Linguagem C#:

É um erro que um espaço de declaração de variável local e um espaço aninhado de declaração de variável local contenham elementos com o mesmo nome. Portanto, dentro de um espaço de declaração aninhado, não é possível declarar uma variável local ou constante com o mesmo nome de uma variável local ou constante em um espaço de declaração envolvente. É possível que dois espaços de declaração contenham elementos com o mesmo nome, desde que nenhum espaço de declaração contenha o outro.