3-4 區塊與變數範圍

區塊

這一段就是本節的重點:
由大括號( { } )包覆起來的程式碼,就是區塊。
資料從哪個區塊出現,就會在它出現的區塊結束時消失。

class 後面一定由大括號包圍,這就是一個區塊;
方法的小括號後面一定由大括號包圍,這也是一個區塊。

下面是應該已經熟悉的 Hello World 範例。
我們看到變數 text 是在 Main 方法內產生的,那麼變數 text 就只能在 Main 方法內部使用。
這個例子太過簡單,我們再更深入一些。

下面的例子在 for 陳述式內宣告了整數變數 i,因此 i 只能存在於 for 迴圈內部,
也就是第 7 行的宣告到第 10 行的大括號結尾之間。

因此當離開 for 迴圈之後,就無法再使用變數 i。
而由於整數 a 是在 Main 方法的開頭被宣告的,因此 a 可以在 Main 方法內任意使用。
然而,在 Main 方法之外,這個整數 a 也不存在。

區塊與變數名稱

只要還在區塊內,就不能重複宣告同樣名稱的變數,即使型別不同也不行。
在下面的例子,先在 Main 方法的區塊宣告 a,然後在其內的 for 迴圈區塊又宣告 a,是非法的。

反過來說,因為資料在離開該區塊後就不存在,所以會有下面例子的做法,來重複性的使用同一個名稱。
我們看到第二個 for 陳述式可以再一次宣告名為 i 的變數,
因為對第二個 for 陳述式來說,不存在前一個 i,因此沒有名稱重複的問題。

區塊的使用

到目前為止,你可能會以為區塊是方法或 for 這種特殊陳述式的專利,但其實是可以自己寫出區塊。
( for 陳述式其實是可以不用大括號,等到後面的章節再解釋)

下面展示了自行用大括號做出區塊的例子,其中的變數 a 也因為所屬區塊不同,因此可以使用同一個名字宣告。