【发布时间】:2020-08-24 01:34:03
【问题描述】:
我知道关于这件事有很多问题。但在我的一生中,我无法理解答案或在我的示例中使用它们。我是 vb .net 的新手,我不能真正实现我的特定示例的一般示例。我所拥有的基本上是这样的:
dim a as New list(of player)
EDIT: dim b as New list(of player) 'previously was: dim b as new player
Class player
Public name As String
'[more]
End Class
[....]
a.Add(New player)
b.Add(New player)
a(0).name="john"
b=a
a(0).name="jack"
msgbox(b(0).name) 'it will print jack instead of john
我现在可以使用 ICloneable 来完成,但是在阅读了很多之后我无法正确实现。 提前谢谢你
【问题讨论】:
-
与 C# 一样,VB.NET 中的赋值不复制/克隆/复制对象。
a和b在赋值后引用同一个对象。也就是说,变量引用同一个集合,第一个元素也是(隐式)同一个 Player.. -
期望的行为可能是“克隆集合中的所有对象”,尽管它并不完全清楚共享对象可变性的哪一部分是一个问题。
-
b=a毫无意义。 a 是玩家列表,b 是玩家。你的意思是b = a(0)? -
@Mary 这是我的错。 a 和 b 都是列表
标签: vb.net implementation icloneable