Lire en anglais

Partager via


Erreur du compilateur CS0136

Une variable locale nommée 'var' ne peut pas être déclarée dans cette portée car elle modifierait la signification de 'var', déjà utilisée dans une portée parent ou actuelle/enfant pour désigner autre chose

Une déclaration de variable masque une autre déclaration qui serait normalement dans la portée. Renommez la variable déclarée sur la ligne qui a généré l’erreur CS0136.

Exemple

L’exemple suivant génère l’erreur CS0136 :

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

D’après la spécification du langage C# :

Le fait qu’un espace de déclaration de variable locale et un espace de déclaration de variable locale imbriqué contiennent des éléments portant le même nom constitue une erreur. Ainsi, dans un espace de déclaration imbriqué, il est impossible de déclarer une variable locale ou une constante portant le même nom qu’une variable locale ou qu’une constante au sein d’un espace de déclaration englobant. Deux espaces de déclaration peuvent contenir des éléments qui portent le même nom à condition qu’aucun des deux espaces ne contienne l’autre.