2016-05-19 37 views
0

您可以initialize an anonymous object這樣的:語法初始化匿名對象的數組

Dim cust = New With {.Name = "Hugo", .Age = 23} 

,您可以initialize a collection這樣的:

Dim numbers = {1, 2, 3, 4, 5} 
Dim names As New List(Of String) From {"Christa", "Brian", "Tim"} 

但是你可以初始化匿名對象與語法的支持數組

你可以這樣做,但custs將只是一個平面在object

Dim custs = { New With {.Name = "Hugo", .Age = 23}, New With {.Name = "Boss", .Age = 32} }

你可以像這樣做,但在custs每個項目將只是一個普通的object

Dim custs As New List(Of Object) From { New With {.Name = "Hugo", .Age = 23}, New With {.Name = "Boss", .Age = 32} }

我怎麼能初始化列表/收集/陣列這樣我就可以訪問集合的全部功能以及內部匿名對象類型的屬性

回答

0

問題wa s可選推斷鍵入已關閉。這可以通過一個簡單的例子來說明,其中初始化一個對象而不首先聲明它的類型導致一個簡單的無聊的對象。

= vs. As assignment

要解決這個問題,你可以打開推斷打字的選項聲明:

Option Infer On 

現在,我們簡單的日期例子應該工作:

Dim x = New DateTime

最後,只要確保一次編譯代碼,因爲匿名對象實際上是作爲隱藏類實現的在幕後。

enter image description here

+0

這就是所謂的「推斷打字」(等同於C#中使用「VAR」)並沒有規定使用選項嚴格關。動態類型使用Option Strict Off並聲明爲Object(與在C#中使用「dynamic」相同)。 –

+0

已修復。謝謝戴夫! – KyleMit