2011-11-08 38 views
1

我知道什么时候创建一个赋值语句没有创建一个新对象,而是引用该对象。比如我要做到以下几点:XNA复制元素,不分配引用

word.start = newWordPos.First.Value; 
word.end = newWordPos.Last.Value; 

但每次的newWordPos.First.ValuenewWordPos.Last.Value值进行更新,然后word.startword.end更新以及时间。有什么办法可以让他们分配实际的价值,这样就不会发生?

+0

你需要给我们更多的信息/代码。从这两行代码中不清楚你使用的是什么类型,所以很难回答你的问题atm ..看起来你可能在这里使用Nullable值类型?再次,我们只能猜测在这一点.. – MattDavey

回答

0

既然你的类型是一个类,你需要克隆的对象,而不仅仅是分配一个引用。

该类型本身需要提供一些创建深度复制的机制。该框架提供了一个接口(IClonable),该接口允许使用单个Clone方法 - 尽管不清楚正在完成什么形式的克隆(即:完全深度克隆等)。

+0

我一直在网上看看,发现一堆网站在谈论这一点。我想要复制的数据是XNA框架提供的Vector2类型。我不知道如何去实现Vector2类的方法。 – McAvoy

+2

@McAvoy:由于它是一个XNA Vector2,它是一个结构。它已经在做一个完整的副本 - 所以你不需要克隆它。 –

+0

那么为什么每次更改列表中的向量时值都会改变 – McAvoy