Visual Basic 10中的集合與數(shù)組初始值設(shè)定
伴隨.NET 4.0和Visual Studio 2010的發(fā)布,Visual Basic 10添加了集合與數(shù)組初始值設(shè)定項的支持。這些功能與C#的非常類似,它僅是對擴展方法和類型引用作出了少許改進。
集合初始值設(shè)定項
和C#一樣,Visual Basic的集合初始值設(shè)定項用在那些實現(xiàn)了IEnumerable接口并暴露Add方法的類。但與C#不同的是,Add方法可在擴展方法中進行定義。
- var x As new List<String>() {"Item1", "Item2"}
- Dim x As New List(Of String) From {"Item1", "Item2"}
給Add方法傳入多個參數(shù)也和C#非常類似。
- var x = new Dictionary
(){{1, "Item1"}, {2, "Item2"}}- Dim x As New Dictionary(Of Integer, String) From {{1, "Item1"}, {2, "Item2"}}
C#語法中會有輕微的歧義現(xiàn)象,這使得它可用把屬性初始值設(shè)定項和對象初始值設(shè)定項聯(lián)系起來。通過使用關(guān)鍵字With和From,有人可能會假定VB能克服這方面的限制,把兩個初始值設(shè)定寫在同一條語句中。不幸的是,情況并沒那么簡單,以下的句子就會出現(xiàn)語法問題:
Dim x as New List(Of Integer) With {.Capacity = 10} From {1,2,3}
另一個VB學習C#的方面是異常的處理方式。如果給特定集合添加任何項的時候拋出異常,整個操作都會中止而該集合變量的值也不會改變。
數(shù)組初始值設(shè)定項
數(shù)值初始值設(shè)定項現(xiàn)在可支持類型引用,這樣大大減少了代碼量。正如我們接下來看到的代碼那樣,花括號中的數(shù)組值就需要對數(shù)組進行是否創(chuàng)建和類型的推斷。
- Dim x = {1, 2, 3}
相比之下,VB早期的版本要求括號為空,用以表示數(shù)組。而且,在沒有明確指定的情況下,會把該變量定義為對象數(shù)組。
- Dim x As Integer() = {1, 2, 3} ‘integer array
- Dim x() = {1, 2, 3} ‘object array
同時支持多維數(shù)組和交錯數(shù)組,盡管后者的語法(每個數(shù)組的括號)顯得有點笨拙。
- Dim multi = {{1, 2}, {3, 4}}
- Dim jagged()() = {({1, 2}), ({3, 4, 5})}
數(shù)組初始值設(shè)定項也可以在調(diào)用函數(shù)中內(nèi)聯(lián)使用。
【編輯推薦】