Błąd kompilatora CS0136

Nie można zadeklarować zmiennej lokalnej o nazwie "var" w danym zakresie, ponieważ dałoby to inne znaczenie zmiennej "var", która jest już używana w zakresie nadrzędnym lub bieżącym lub podrzędnym do oznaczenia czego innego.

Deklaracja zmiennej ukrywa inną deklarację, która w przeciwnym razie byłaby w zakresie. Zmień nazwę zmiennej zadeklarowanej w wierszu, który wygenerował CS0136.

Przykład

Poniższy przykład generuje CS0136:

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

Kompilator zgłasza ten błąd niezależnie od kolejności tekstowej deklaracji zmiennych, jak pokazano w poniższym przykładzie:

// 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++;  
      }  
   }  
}  

Z specyfikacji języka C#:

Błędem jest, gdy przestrzeń deklaracji zmiennych lokalnych oraz zagnieżdżona przestrzeń deklaracji zawierają elementy o tej samej nazwie. W związku z tym w przestrzeni deklaracji zagnieżdżonej nie można zadeklarować zmiennej lokalnej ani stałej o takiej samej nazwie jak zmienna lokalna lub stała w otaczającej przestrzeni deklaracji. Istnieje możliwość, aby dwie spacje deklaracji zawierały elementy o tej samej nazwie, o ile żadna spacja deklaracji nie zawiera drugiej.