gpt4 book ai didi

c# - C# -> VB 转换后 `New SomeClass { Key .SomeProperty = SomeValue }` 中的语法错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:41 25 4
gpt4 key购买 nike

我和我的一个同事都从事编程工作。他用 C# 创建了一个类,我正在努力将它转换为 VB.NET。除了一行之外,我得到了整个类的转换,在这一点上我无法弄清楚所以认为一双新的眼睛也许能够发现我的错误。

原始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 ”是从哪里来的。

最佳答案

有两个语法相似但语义不同的概念:

匿名类型

C#: new { A = 1, B = 2 }

VB:新增 { Key .A = 1, Key .B = 2}

在这里,VB also allows you to add mutable (non-key) properties ,这C# does not support :

新增 { Key .A = 1, Key .B = 2, .SomeMutableProperty = 3}

因此,Key 关键字在这里很重要。

命名类型的对象初始化器

C#: new MyClass { A = 1, B = 2 }

VB:使用 { .A = 1, .B = 2 } 新建 MyClass

此处设置了 MyClass 的现有属性,因此 Key 关键字无关紧要,因此是不允许的。


显然,您的 C# -> VB 转换器认为这是一个匿名类型,尽管它是一个对象初始值设定项。删除 Key 关键字并将错误报告发送给转换器的开发人员。

关于c# - C# -> VB 转换后 `New SomeClass { Key .SomeProperty = SomeValue }` 中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35043458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com