我可以在VB.net中将对象添加到结构中吗?
我有一块木材的数据结构。我已经构建了一个类来处理我想成为这个结构的长度成员的数据类型的维度(建筑、度量等)。VB说我不能在我的定义中使用“new”,除非我将成员设置为“Shared”。如果我将该成员设置为“共享”,那么当我尝试在代码中访问该成员时,将看不到数据我可以在VB.net中将对象添加到结构中吗?,vb.net,class,object,data-structures,shared,Vb.net,Class,Object,Data Structures,Shared,我有一块木材的数据结构。我已经构建了一个类来处理我想成为这个结构的长度成员的数据类型的维度(建筑、度量等)。VB说我不能在我的定义中使用“new”,除非我将成员设置为“Shared”。如果我将该成员设置为“共享”,那么当我尝试在代码中访问该成员时,将看不到数据 Public Structure PieceInfo Dim ProjectNumber As String Dim ProjectName As String Dim BuildingType As Strin
Public Structure PieceInfo
Dim ProjectNumber As String
Dim ProjectName As String
Dim BuildingType As String
Dim BuildingNumber As String
Dim BLevel As String
Dim Batch As String
Dim Trussname As String
Dim Span As Single
Dim PieceName As String
Dim LumberType As String
Shared PieceLength As New clsDimension
Shared StockLength As New clsDimension
Dim LeftSplicePlate As String
Dim RightSplicePlate As String
End Structure
如何使用我的“clsDimension”对象作为结构的“Length”成员的数据类型?正如所有注释所示:您应该将结构更改为类,因为您希望引用它。由于结构是值类型,类是引用类型,这就是您想要的:
Public Class PieceInfo
Dim ProjectNumber As String
Dim ProjectName As String
Dim BuildingType As String
Dim BuildingNumber As String
Dim BLevel As String
Dim Batch As String
Dim Trussname As String
Dim Span As Single
Dim PieceName As String
Dim LumberType As String
Shared PieceLength As New clsDimension
Shared StockLength As New clsDimension
Dim LeftSplicePlate As String
Dim RightSplicePlate As String
End Class
.NET结构没有默认构造函数,您必须创建自己的构造函数(或者创建一个函数来初始化值)。但这样做会破坏结构的目的
Public Structure PieceInfo
Dim ProjectNumber As String
Dim ProjectName As String
Dim BuildingType As String
Dim BuildingNumber As String
Dim BLevel As String
Dim Batch As String
Dim Trussname As String
Dim Span As Single
Dim PieceName As String
Dim LumberType As String
Dim PieceLength As clsDimension
Dim StockLength As clsDimension
Dim LeftSplicePlate As String
Dim RightSplicePlate As String
Public Sub New(ByVal t As String)
PieceLength = New clsDimension
StockLength = New clsDimension
End Sub
End Structure
但正如其他人所说,将其更改为类是正确的做法。类是引用类型,结构是值类型 这应该是一个类,而不是一个结构。为什么不在定义中不初始化PieceLength和StockLength呢?然后你可以创建一个构造函数,在那里你可以给他们分配clsDimension的实例。。为什么它应该是类而不是结构?因为我想使用对象作为数据类型?就像@SLaks所说的,那应该是一个类。有关何时选择结构或类的信息,请参见。基本上,结构应该是表示单个值且不可变的。我一直认为对象应该包含数据和更改该数据的方法。我想你可以说'clsDimension'可以改变它的成员的数据,所以这意味着整个事情应该是一个类。实际上,我在代码中使用了mrtig的建议,但下次遇到这种情况时,我将使用一个类。谢谢