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 等效代码仍然束手无策,你能帮我一把吗?
您发布的两个代码片段显示了不同的语言功能:
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# 中,匿名类型的所有属性都被视为键属性。