如何将另一个类的列表初始化为类构造函数

问题描述 投票:0回答:1

假设有一个名为Feature的类

Public Class Feature
 Public Property featureName As String 
 Public Property sRanges As Short 
 Public Property eRange As Short  
End Class

现在有另一个称为通道的第二类,如下所示,我在其中声明第一类类型的列表。我可以使用构造函数来初始化,例如

Public Class Channel
Public Property channelName As String
Public Property Features As List(Of Feature)    

  Public sub New()
    features =New List(Of Feature)() 
  End sub
End Class 

现在我有另一个第三类,我正在创建一个类型通道列表,

Public Class Fixture    
Public Property Address As Short
Public Property EndAddress As Short
Public Property FixtureName As String
Public Property Description As String
Public Property Channels As List(Of Channel)

Public Sub New()
    Channels = New List(Of Channel)()
End Sub
End Class

现在我的问题是,当我们使用第一类到第二类和第二类到 3d 类作为列表(如本例所示)时,初始化所有这些级联列表的最佳和正确方法是什么。

list vb.net class constructor
1个回答
1
投票

你一开始就做错了。您不需要在构造函数中执行任何操作。将列表创建构建到属性中,例如

Public Class Parent

    Public ReadOnly Property Children As New List(Of Child)

End Class

请注意,该属性是

ReadOnly
,它不会阻止现有
List
对象被修改(使用 getter,而不是 setter) - 但确实会阻止该属性被设置为不同的
List
对象。这就是它几乎应该始终完成的方式,并且在整个 .NET 中都是这样做的。

您也可以在

Child
课程中执行相同的操作,例如

Public Class Child

    Public ReadOnly Property Grandchildren As New List(Of Grandchild)

End Class

这就是您所需要的。这可以通过您喜欢的任意多个层和任意多个分支来实现。填充列表是另一回事 - 如何操作取决于您并且可能会有所不同 - 但创建它们很简单。当您创建实例时,它会自动发生。

© www.soinside.com 2019 - 2024. All rights reserved.