gpt4 book ai didi

c# - VB.NET 等效于匿名类型的 C# 对象初始值设定项

转载 作者:太空狗 更新时间:2023-10-30 00:41:00 25 4
gpt4 key购买 nike

我对 .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 中的 this。)

最佳答案

如果将 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

关于c# - VB.NET 等效于匿名类型的 C# 对象初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23539824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com