在實際的程式設計中,陣列是運用很多的物件。象Array,List等都是對數組的一種封裝。
我們來看看下面兩種的定義方法,能看出他們的差別嗎?
Dim tB1() As Byte
Dim tB2() As Byte = {}
這兩種都是定義一個位元組數組,而且數組裡都沒有元素。
不過下面兩句話就能看出差別了。
Debug.Print(tB1 Is Nothing)
Debug.Print(tB2 Is Nothing)
第一句得到的結果是True,第二局得到的結果是False。說明,tB1是數組但沒有初始化過,等價於Nothing,tB2是數組,雖然沒有元素,但是初始化過,和Nothing不等價,你可以訪問tB2的其他屬性,如Length,得到的是0,表明是一個空數組。而存取tB1的其他屬性,如Length,就會報錯。
空數組和未初始化的數組在很多地方還是有差別的。
例如:
Debug.Print(System.Text.Encoding.Default.GetString(tB1))
Debug.Print(System.Text.Encoding.Default.GetString(tB2))
雖然tB1和tB2中都沒有元素,但是由於tB1沒有初始化,系統會拋出一個異常。而tB2雖然沒有元素,但是表示一個0元素的數組,系統不會拋出異常,回傳一個空字串。
從這個看得出來,Nothing和0元素的陣列還是有差別,這個是我們容易忽略的地方。