基于最近的問題,我不明白所提供的答案。似乎您應該能夠執(zhí)行這樣的操作,因為它們的范圍不會重疊static void Main(){ { int i; } int i;}此代碼無法編譯,并出現(xiàn)以下錯誤:不能在此范圍內(nèi)聲明名為“ i”的局部變量,因為它將賦予“ i”不同的含義,“ i”已在“子”范圍中用于表示其他內(nèi)容
3 回答

Smart貓小萌
TA貢獻1911條經(jīng)驗 獲得超7個贊
我不認為任何的答案至今已相當?shù)玫搅艘?guī)范的關鍵線。
從8.5.1節(jié)開始:
在local-variable-declaration中聲明的局部變量的范圍是聲明所在的塊。在文本位置引用局部變量的局部變量聲明符之前的局部變量是錯誤的。在局部變量的范圍內(nèi),聲明另一個具有相同名稱的局部變量或常量是編譯時錯誤。
(強調(diào)我的。)
換句話說,“較晚”變量的范圍包括聲明之前的塊的一部分,即它包括包含“較早”變量的“內(nèi)部”塊。
您不能在比其聲明更早的位置引用后面的變量-但它仍在范圍內(nèi)。

至尊寶的傳說
TA貢獻1789條經(jīng)驗 獲得超10個贊
根據(jù)C#語言規(guī)范:
塊的局部變量聲明空間包括任何嵌套塊。因此,在嵌套塊中無法聲明與封閉塊中的局部變量同名的局部變量。
本質(zhì)上,這是不允許的,因為在C#中,它們的作用域?qū)嶋H上是重疊的。
編輯:只是為了澄清,C#的范圍是在塊級別而不是逐行解決的。因此,雖然確實不能在聲明之前引用代碼中的變量,但其作用域一直擴展到塊的開頭,這也是事實。
- 3 回答
- 0 關注
- 925 瀏覽
添加回答
舉報
0/150
提交
取消