コンパイラ エラー CS0136

更新 : 2007 年 11 月

エラー メッセージ

ローカルの変数 'var' をこのスコープで宣言することはできません。これは、'親または現在の/子' スコープで別の意味を持つ 'var' の意味が変更されるのを避けるためです。

変数宣言が、スコープ内にある別の宣言を隠ぺいしています。CS0136 エラーが発生した行で宣言されている変数の名前を変更してください。

使用例

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

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

以降は、「C# 言語仕様」のセクション 7.5.2.1 からの抜粋です。

式または宣言子の中で simple-name として指定されている識別子の各使用箇所について、すぐ外側のローカル変数宣言空間 (§CNDJ6nn5us4RjIIAqgBLqQsCAAAACAAAAA4AAABfAFIAZQBmADQANgAxADYAMgAyADEAMwA4AAAA REF _Ref461622138 \r \h 3.3) の中の式または宣言子で simple-name として指定されている同じ識別子はすべて、同じエンティティを示している必要があります。この規則により、特定のブロック、switch ブロック、for ステートメント、foreach ステートメント、using ステートメント、または匿名関数内にある名前は常に同じ意味を持ちます。