【发布时间】:2011-10-28 11:56:23
【问题描述】:
我想在一个集合中存储对一堆结构的引用。一般的脚手架是这样的:
Structure myStructType
Dim prop1 as String
Dim prop2 as int
End Structure
Dim myList as new List(Of myStructType)()
'Wrongness below
Dim myStruct as new myStructType()
myStruct.prop1 = "struct1"
myStruct.prop2 = 1
myList.Add(myStruct)
myStruct = new myStructType()
mystruct.prop1 = "number two"
mystruct.prop2 = 2
myList.Add(myStruct)
现在这不起作用,因为它引用了相同的内存。我真正想要的是也用于引用类型的“按值传递引用”行为,以便我可以轻松地继续生成更多引用类型。
除了将结构变成类之外,还有什么方法可以解决这个问题?这实际上是使用结构的正确方法,还是我完全错了?
【问题讨论】:
-
代码运行良好,myStructType 是一个值类型。该列表存储结构的副本。试试看。
-
@Hans,谢谢。因此,如果我对您的理解正确,当我传递一个持有值类型的变量时,我实际上是在传递该变量所持有的值的副本?似乎有道理。
标签: vb.net pass-by-reference structure pass-by-value