Vb.net 在不使用With或From的情况下声明New

Vb.net 在不使用With或From的情况下声明New,vb.net,Vb.net,我想知道是否可以写多行,相当于下面这一行,但不是使用With和From,而是使用多行来声明数据 Dim Price = New PriceStruc() With { _ .Bids = New List(Of Prices)() From {New Prices() With {.Price = 1101, .Size = 1}}, .Offers = New List(Of Prices)() From {New Prices() With {.Price = 1102, .Size

我想知道是否可以写多行,相当于下面这一行,但不是使用With和From,而是使用多行来声明数据

Dim Price = New PriceStruc() With { _
  .Bids = New List(Of Prices)() From {New Prices() With {.Price = 1101, .Size = 1}},
  .Offers = New List(Of Prices)() From {New Prices() With {.Price = 1102, .Size = 1}}}

创建实例时,可以向构造函数添加参数以设置属性。这对于仅当此属性或该属性已知时才应该存在的对象尤其有用。在设计器序列化中的另一个用途,以及其他用途

警告:按要求执行不会使代码更容易阅读

我不知道这些是什么,所以我自己编了一个,并修改了一些术语(看起来
Prices
有一个项目的数据,但它是复数)

存在简单构造函数(无参数),因为许多序列化程序都需要一个。根据序列化程序的不同,可以将其设置为
Friend
,以强制代码使用重载,并在创建新的Price对象时指定
Value
Size
。如果没有特定的关键点信息,对象无权创建,则此选项非常有用。(对于每个循环,您仍然可以在
中使用它,因为您不需要新对象)

在这种情况下,
(命名以避免
价格.价格
)和
大小
可能是必需的元素,但构造函数重载主要是为了方便。要使用它:

Dim p As New Price(1101, 1)
现在,这些对象可以不使用
而使用实例化。支架看起来像这样:

Friend Class PriceItem
    Public Property Bids As List(Of Price)
    Public Property Offers As List(Of Price)

    Public Sub New()

    End Sub

    Public Sub New(b As List(Of Price), o As List(Of Price))
        Bids = b
        Offers = o
    End Sub

End Class
可能还有更多,比如一个
名称
指示投标和报价的目的,但想法是一样的:在构造函数中传递列表

现在,您可以使用其构造函数初始化
Price
对象和
PriceItem

Dim Prices = New PriceItem(New List(Of Price)(New Price() {New Price(1101, 1),
                                                           New Price(1102, 1)}),
                           New List(Of Price)(New Price() {New Price(1106, 7),
                                                           New Price(1104, 1)}))

没有来自的

1101、1102为投标项目,1106、1104为报价项目

正如我所说,它并没有使阅读、调试或编写代码变得更容易。对于
Price
项目来说,这可能是有意义的,但是将列表传递给
PriceItem
ctor似乎有点过分。这似乎在可读性和简洁性之间取得了最佳平衡,而不是试图将所有内容都压缩到初始化中:

Dim PItem As New PriceItem
PItem.Bids = New List(Of Price)(New Price() {New Price(1101, 1), New Price(1102, 1)})
PItem.Offers = New List(Of Price)(New Price() {New Price(1106, 7), New Price(1104, 1)})


否来自

是。将价格和尺寸参数添加到构造器中您介意给我看一个样品吗?
Dim PItem As New PriceItem
PItem.Bids = New List(Of Price)(New Price() {New Price(1101, 1), New Price(1102, 1)})
PItem.Offers = New List(Of Price)(New Price() {New Price(1106, 7), New Price(1104, 1)})