2015-01-26 124 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; 
相关问题