Freigeben über


Compilerfehler CS0136

Eine lokale Variable mit dem Namen 'var' kann in diesem Bereich nicht deklariert werden, da sie eine andere Bedeutung für "var" hat, die bereits in einem Bereich "übergeordnetes oder aktuelles/untergeordnetes Element" verwendet wird, um etwas anderes anzugeben.

Eine Variabledeklaration blendet eine andere Deklaration aus, die andernfalls im Bereich enthalten wäre. Benennen Sie die Variable um, die in der Zeile deklariert wird, die CS0136 generiert hat.

Beispiel

Im folgenden Beispiel wird CS0136 generiert:

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

Der Compiler meldet diesen Fehler unabhängig von der Textreihenfolge der Variablendeklarationen, wie im folgenden Beispiel gezeigt:

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

Aus der C#-Sprachspezifikation:

Es handelt sich um einen Fehler für einen lokalen Variablendeklarationsbereich und einen geschachtelten lokalen Variablendeklarationsbereich, der Elemente mit demselben Namen enthält. Daher ist es innerhalb eines geschachtelten Deklarationsbereichs nicht möglich, eine lokale Variable oder Konstante mit demselben Namen wie eine lokale Variable oder Konstante in einem eingeschlossenen Deklarationsbereich zu deklarieren. Es ist möglich, dass zwei Deklarationsbereiche Elemente mit demselben Namen enthalten, solange keiner der beiden Deklarationsbereiche den anderen enthält.