我目前正在翻译Bundler附带的类,它是框架ServiceStack的一部分。我目前坚持的一点是:
new { media }
或
new[] { typeof(object) }
我是一名VB.net程序员,我真的不知道这里做了什么。创建某种匿名参数?
PS:可能值得注意发生这种情况的上下文:这两个结构都作为参数传递给函数。
感谢您的时间。
修改
好的,现在(我认为)我理解代码的作用,但是对于那些片段的vb.net等效代码我仍然无能为力,你能帮我一把吗?
答案 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) }
答案 1 :(得分:1)
C#中的new { foo = bar }
语法实例化一个匿名类型。
new[]
创建一个隐式类型数组,与匿名类型不同,它是一种语言简写,没有语义含义(除非它是一个隐式类型的匿名类型数组)。
这里描述了VB等价物:http://msdn.microsoft.com/en-us/library/bb384767.aspx
New With { Key media }
VB.NET具有"关键属性"的概念。 - 只读和参与平等比较。在C#中,匿名类型的所有属性都被视为关键属性。