VB.匿名类型的c#对象初始化器

本文关键字:对象 初始化 类型 VB | 更新日期: 2023-09-27 18:02:15

我对。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中类似的东西。)

VB.匿名类型的c#对象初始化器

如果将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://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/data-types/tuples