Vb.net 结构中的DirectCasted对象是否克隆?
我使用一种结构,它可以将数据变量作为对象保存:Vb.net 结构中的DirectCasted对象是否克隆?,vb.net,pointers,Vb.net,Pointers,我使用一种结构,它可以将数据变量作为对象保存: Structure parse_object Friend data As Object End Structure 在这个数据变量中,我想保存不同类型的结构 例如,这个: Structure drive_data Friend num_steps As UInteger End Structure 我这样初始化它: Dim driveConf_comm as parse_object Private Sub init()
Structure parse_object
Friend data As Object
End Structure
在这个数据变量中,我想保存不同类型的结构
例如,这个:
Structure drive_data
Friend num_steps As UInteger
End Structure
我这样初始化它:
Dim driveConf_comm as parse_object
Private Sub init()
driveConf_comm = new parse_object()
structure drive_data
Dim d As New drive_data()
d.num_steps = 0
driveConf_comm.data = d
End Sub
现在我想更改回调中的值'num_steps'
Private Sub cb(ByRef num_steps as UInteger)
Dim d As drive_data = DirectCast(driveConf_comm.data, drive_data)
d.num_steps = 100000
End Sub
但这不会改变变量,将d写回driveConf_comm.data:
DirectCast(driveConf_comm.data, drive_data).num_steps => 0
driveConf_comm.data = d
DirectCast(driveConf_comm.data, drive_data).num_steps => 100000
DirectCast克隆了我的结构吗
请帮忙 是的,但DirectCast不应受到指责。这就是值类型(又名结构)的工作方式
每次将值类型指定给另一个变量、字段或属性时,都会复制结构中的值。正如您所注意到的,这意味着对副本的修改不会影响原始版本。@Oli否,但如果您将其转换为类而不是结构,您将获得类似的引用类型语义。