编译器错误 CS0136
更新:2007 年 11 月
错误消息
不能在此范围内声明名为“var”的局部变量,因为这样会使“var”具有不同的含义,而它已经用于“parent or 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++;
}
}
}
C# 语言规范 7.5.2.1 节:
对于表达式或声明符中以简单名称形式给定的标识符的每个匹配项,直接封闭局部变量声明空间 (§CNDJ6nn5us4RjIIAqgBLqQsCAAAACAAAAA4AAABfAFIAZQBmADQANgAxADYAMgAyADEAMwA4AAAA REF _Ref461622138 \r \h 3.3) 内的表达式或声明符中与简单名称相同的标识符的其他每个匹配项都必须引用同一个实体。此规则可确保名称的含义在给定的块、switch 块、for-、foreach- 或 using 语句或匿名函数中始终相同。