2015-01-26 169 views
-3

我想更新子類列表中的一個元素,它不起作用。爲什麼? 代碼示例這裏:C#用一個類對象分配一個子類對象

//it is second paymentAction in Actions. 
playAction setAction = play.Actions.Find(ActionType.Set); 

//pa is playAction object with values inside. 
setAction=pa; 

/// in debug mode, the Actions[1] in play object didn't change. It still contain old values. 
+0

爲什麼要改變它? – zerkms 2015-01-26 22:32:29

+0

你有沒有試過例子'setAction.someprop = pa.someprop'? – EZI 2015-01-26 22:34:32

+0

你的代碼究竟做了什麼。我們需要更深入的代碼和解釋。首先,我不知道playAction是一個類,枚舉,類型,結構等,也不知道Find()方法的作用。我沒有任何關於pa的知識以及它的參考,但我認爲它只是另一個playAction參考?如果您將setAction設置爲pa後playAction是第十類,那麼從Find()返回的playAction不會影響引用被替換。 – Bauss 2015-01-26 22:36:01

回答

1

可變setAction將包含在列表中找到的對象,即存儲在所述列表中的參考的副本的引用。

當您將新對象分配給變量setAction時,它只會替換變量中的引用。由於它是列表中參考的副本,因此列表不受影響。

您需要獲得該項目的索引列表,這樣就可以更換存儲在列表中的參考:

play.Actions[index] = pa; 
相關問題