You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将指定C#代码转为VB.NET后报错,求正确实现方案

问题解决:C#转VB.NET代码的类型转换错误

错误原因

你的VB代码报错是因为直接将单个InvoiceBodyDto对象传递给List(Of InvoiceBodyDto)的构造函数,但该构造函数要求传入可枚举集合(如数组、其他List),而非单个对象。原C#代码中New() {body}是创建了包含单个body元素的数组,对应VB需要用特定语法将单个元素包装为集合。

正确的VB.NET代码

方式1:使用From语法初始化List(推荐)

Dim invoices As New List(Of InvoiceDto) From {
    New InvoiceDto With {
        .Body = New List(Of InvoiceBodyDto) From {body},
        .Header = header,
        .Payments = New List(Of PaymentDto) From {payment}
    }
}

方式2:直接使用数组(若属性接受IEnumerable(Of T)类型)

如果InvoiceDto的Body和Payments属性定义为IEnumerable(Of InvoiceBodyDto)/IEnumerable(Of PaymentDto),可以简化为:

Dim invoices As New List(Of InvoiceDto) From {
    New InvoiceDto With {
        .Body = {body},
        .Header = header,
        .Payments = {payment}
    }
}

代码说明

  • From {body}语法会将单个元素包装为可枚举集合,满足List构造函数的参数要求
  • 外层From { ... }用于初始化包含单个InvoiceDto对象的List(Of InvoiceDto),和原C#代码的集合初始化逻辑完全一致

内容的提问来源于stack exchange,提问作者Hero4000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 00:42:15