[英]VB.NET equivalent of C# object initializer of an anonymous type
我對.NET類型系統的高級功能沒有經驗。 我找不到zz的類型(可以寫什么而不是var 。或者var是最好的選擇嗎?)
string foo = "Bar";
int cool = 2;
var zz = new { foo, cool }; // Watches show this is Anonymous Type
但最重要的是,如何在VB.NET代碼中實現等效(這是我實際需要的)。
Dim Foo As String = "Bar"
Dim Cool As Integer = 2
Dim zz = {Foo, Cool} 'This is not an equivalent of above, I'm getting an array
我搜索了幾個C#源代碼,使用了代碼監視器並了解了zz在內部的運行方式,但我無法進行下一步。
(我努力的目的是像這樣在VB.NET)。
您的代碼甚至不會在OPTION STRICT
設置為ON的情況下編譯,強烈建議使用。 沒有類型可以從String
+ Int32
派生。 如果你想要一個Object()
它會編譯:
Dim zz As Object() = {Foo, Cool}
但是你想創建一個匿名類型,使用New With
:
Dim zz = New With {Foo, Cool}
http://msdn.microsoft.com/en-us/library/bb385125.aspx
使用.NET 4.7和Visual Basic 2017,您還可以使用名稱為ValueTuples
:
Dim zz = (FooName:=foo, CoolName:=cool)
現在您可以按名稱訪問元組項:
int cool = zz.CoolName;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.