C# -> VB 转换后 `New SomeClass { Key .SomeProperty = SomeValue }` 中的语法错误
Syntax error in `New SomeClass { Key .SomeProperty = SomeValue }` after C# -> VB conversion
我和我的一个同事都做编程。他用 C# 制作了一个 class,我正在努力将其转换为 VB.NET。我得到了完整的 class 转换,除了一行,在这一点上我无法弄清楚所以认为新的眼睛可能会发现我的错误。
原始 C# 代码
using (var client = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }))
已转换VB.NET代码
Using client = New HttpClient(New HttpClientHandler With {Key .AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate})
错误
在对象初始化中初始化的字段名称或 属性 必须以“.”开头。
错误位于'Key'
下
最后说明: 我对大部分内容使用了一个可怕的代码转换器,所以我不确定 'key' 来自哪里。
不确定 Key
的来源。
运行 这通过 Instant VB 给出了以下内容,所以它同意我认为不需要 Key
的想法:
Option Infer On
Using client = New HttpClient(New HttpClientHandler With {.AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate})
有两个语法相似但语义不同的概念:
匿名类型
C#: new { A = 1, B = 2 }
VB: New With { Key .A = 1, Key .B = 2 }
在这里,VB also allows you to add mutable (non-key) properties, which C# does not support:
New With { Key .A = 1, Key .B = 2, .SomeMutableProperty = 3 }
因此,Key
关键字在这里很重要。
命名类型的对象初始值设定项
C#: new MyClass { A = 1, B = 2 }
VB: New MyClass With { .A = 1, .B = 2 }
此处设置了 MyClass 的现有属性,因此 Key
关键字不相关,因此不允许。
显然,您的 C# -> VB 转换器认为这是一个匿名类型,尽管它是一个对象初始值设定项。删除 Key
关键字并将错误报告发送给转换器的开发人员。
我和我的一个同事都做编程。他用 C# 制作了一个 class,我正在努力将其转换为 VB.NET。我得到了完整的 class 转换,除了一行,在这一点上我无法弄清楚所以认为新的眼睛可能会发现我的错误。
原始 C# 代码
using (var client = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }))
已转换VB.NET代码
Using client = New HttpClient(New HttpClientHandler With {Key .AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate})
错误 在对象初始化中初始化的字段名称或 属性 必须以“.”开头。
错误位于'Key'
下最后说明: 我对大部分内容使用了一个可怕的代码转换器,所以我不确定 'key' 来自哪里。
不确定 Key
的来源。
运行 这通过 Instant VB 给出了以下内容,所以它同意我认为不需要 Key
的想法:
Option Infer On
Using client = New HttpClient(New HttpClientHandler With {.AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate})
有两个语法相似但语义不同的概念:
匿名类型
C#: new { A = 1, B = 2 }
VB: New With { Key .A = 1, Key .B = 2 }
在这里,VB also allows you to add mutable (non-key) properties, which C# does not support:
New With { Key .A = 1, Key .B = 2, .SomeMutableProperty = 3 }
因此,Key
关键字在这里很重要。
命名类型的对象初始值设定项
C#: new MyClass { A = 1, B = 2 }
VB: New MyClass With { .A = 1, .B = 2 }
此处设置了 MyClass 的现有属性,因此 Key
关键字不相关,因此不允许。
显然,您的 C# -> VB 转换器认为这是一个匿名类型,尽管它是一个对象初始值设定项。删除 Key
关键字并将错误报告发送给转换器的开发人员。