C# 到 VB.net 代码转换.匿名 New() 的问题

本文关键字:New 问题 匿名 转换 VB net 代码 | 更新日期: 2023-09-27 18:35:22

我目前正在翻译Bundler附带的类,这是ServiceStack框架的一部分。我目前坚持的一点如下:

new { media }

new[] { typeof(object) }

我是一个 VB.net 程序员,我真的不明白这里在做什么。创建某种匿名参数?

PS:可能值得注意的是发生这种情况的上下文:这两种构造都作为参数传递给函数。

谢谢你的时间。

编辑:

好的,现在(我想)我明白了代码的作用,但我对这些片段的 vb.net 等效代码仍然束手无策,你能帮我一把吗?

C# 到 VB.net 代码转换.匿名 New() 的问题

您发布的两个代码片段显示了不同的语言功能:

new { media }

这一个演示如何实例化匿名类型实例。可以在此处阅读有关匿名类型的详细信息:匿名类型(C# 编程指南)。您可以在此处阅读有关匿名类型的 VB.NET:匿名类型(Visual Basic)。

对于您的类型,等效 VB.NET 代码将是:

New With { Key .media = media }

Key 使匿名类型中的属性仅集,并对该类型进行相等比较,检查该属性以确定整个对象是否相等。在 C# 中,默认情况下,所有匿名类型属性都是属性,不能使它们可变。

第二个:

new [] { typeof(object) }

这个创建隐式类型化Type[]数组。

您可以使用以下语法在 VB.NET 中创建类似的数组:

{ GetType(object) }

阅读如何:在 Visual Basic 中初始化数组变量以获取更多详细信息。

C# 中的 new { foo = bar } 语法实例化匿名类型。

new[]创建一个隐式类型数组,与匿名类型不同,它是一种语言速记,没有语义含义(除非它是匿名类型的隐式类型数组)。

VB 等效项描述如下:http://msdn.microsoft.com/en-us/library/bb384767.aspx

New With { Key media }

VB.NET 具有"键属性"的概念 - 它们是只读的,并参与相等比较。 在 C# 中,匿名类型的所有属性都被视为键属性。