編譯器錯誤 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 節:
針對每個運算式或宣告子 (Declarator) 中當做簡單名稱使用的指定識別項 (位於立即封入該符合項目的區域變數宣告空間 (§CNDJ6nn5us4RjIIAqgBLqQsCAAAACAAAAA4AAABfAFIAZQBmADQANgAxADYAMgAyADEAMwA4AAAA REF _Ref461622138 \r \h 3.3)),必須與運算式或宣告子中當做簡單名稱使用的每個其他同名識別項參考相同的實體。這個規則可確保無論是在指定的區塊、switch 區塊、for 陳述式、foreach 陳述式、using 陳述式或匿名函式內,名稱的意義一律相同。