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

时间:2014-12-27 21:46:39

标签: c# vb.net

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

new { media }

new[] { typeof(object) }

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

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

感谢您的时间。

修改

好的,现在(我认为)我理解代码的作用,但是对于那些片段的vb.net等效代码我仍然无能为力,你能帮我一把吗?

2 个答案:

答案 0 :(得分:3)

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

new { media }

这个展示了如何实例化匿名类型实例。您可以在此处详细了解匿名类型:Anonymous Types (C# Programming Guide)。你可以在这里阅读VB.NET中的匿名类型:Anonymous Types (Visual Basic)

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

New With { Key .media = media }

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

第二个:

new [] { typeof(object) }

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

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

{ GetType(object) }

阅读How to: Initialize an Array Variable in Visual Basic了解详情。

答案 1 :(得分:1)

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

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

这里描述了VB等价物:http://msdn.microsoft.com/en-us/library/bb384767.aspx

New With { Key media }

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