Condividi tramite


Errore del compilatore CS0136

Non è possibile dichiarare una variabile locale denominata 'var' in questo ambito perché darebbe un significato diverso a 'var', che è già usato in un ambito 'padre o corrente/figlio' per indicare qualcos'altro

Una dichiarazione di variabile nasconde un'altra dichiarazione che altrimenti si trova nell'ambito. Rinominare la variabile dichiarata nella riga che ha generato CS0136.

Esempio

L'esempio seguente genera l'errore CS0136:

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

Il compilatore segnala questo errore indipendentemente dall'ordine testuale delle dichiarazioni di variabile, come illustrato nell'esempio seguente:

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

Dalla specifica del linguaggio C#:

È un errore che uno spazio di dichiarazione di variabili locali e uno spazio di dichiarazione di variabili locali annidate contengano elementi con lo stesso nome. Pertanto, all'interno di uno spazio di dichiarazione annidato non è possibile dichiarare una variabile locale o una costante con lo stesso nome di una variabile locale o una costante in uno spazio di dichiarazione di inclusione. È possibile che due spazi di dichiarazione contengano elementi con lo stesso nome, purché nessuno degli spazi di dichiarazione contenga l'altro.