更新: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 节:
对于表达式或声明符中以简单名称形式给定的标识符的每个匹配项,直接封闭局部变量声明空间 (§CNDJ6nn5us4RjIIAqgBLqQsCAAAACAAAAA4AAABfAFIAZQBmADQANgAxADYAMgAyADEAMwA4AAAA REF _Ref461622138 \r \h 3.3) 内的表达式或声明符中与简单名称相同的标识符的其他每个匹配项都必须引用同一个实体。此规则可确保名称的含义在给定的块、switch 块、for-、foreach- 或 using 语句或匿名函数中始终相同。