3 回答

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

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