コンパイラ エラー 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 ステートメント、または匿名関数内にある名前は常に同じ意味を持ちます。