コンパイラ エラー CS0135

更新 : 2007 年 11 月

エラー メッセージ

'declaration1' は宣言 'declaration2' と競合しています。

コンパイラでは名前を隠ぺいできません。通常は、名前を隠ぺいするとコード内で論理エラーが発生します。

使用例

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

// CS0135.cs
public class MyClass2
{
   public static int i = 0;

   public static void Main()
   {
      {
         int i = 4;
         i++;
      }
      i = 0;   // CS0135
   }
}

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

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