次の方法で共有


コンパイラ エラー CS0136

'var' という名前のローカル変数は、'var' に別の意味を与えるため、このスコープでは宣言できません。これは、'parent または current/child' スコープで既に使用され、他の何かを示すために使用されています。

変数宣言は、それ以外の場合はスコープ内にある別の宣言を非表示にします。 CS0136 を生成した行で宣言されている変数の名前を変更します。

次の例では CS0136 が生成されます。

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

コンパイラは、次の例に示すように、変数宣言のテキストの順序に関係なく、このエラーを報告します。

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

C# 言語仕様から:

ローカル変数宣言スペースと入れ子になったローカル変数宣言スペースに同じ名前の要素が含まれている場合は、エラーになります。 したがって、入れ子になった宣言空間内では、外側の宣言空間でローカル変数または定数と同じ名前のローカル変数または定数を宣言することはできません。 宣言領域に他方が含まれていない限り、2 つの宣言領域に、同じ名前の要素を含めることができます。