在實際的程式設計中,數組是運用很多的對象。象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元素的數組還是有差別,這個是我們容易忽視的地方。
本文轉自萬倉一黍部落格園部落格,原文連結:http://www.cnblogs.com/grenet/archive/2010/04/01/1701989.html,如需轉載請自行聯系原作者