簡體   English   中英

VB.NET相當於匿名類型的C#對象初始化器

[英]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;

https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/data-types/tuples

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM