2011-11-08 41 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