我有一个数组和类型;
List<ContractListType> ContractsList = new List<ContractListType>();
ContractListType instance = new ContractListType();
我通过
在我的ContractsList 4中添加了4个元素If a == 1
instance.name = "A"
ContractsList.Add(instance);
If b == 1
instance.name = "B"
ContractsList.Add(instance);
If c == 1
instance.name = "C"
ContractsList.Add(instance);
If d == 1
instance.name = "D"
ContractsList.Add(instance);
最后我希望将我的列表与回复相匹配。
response.GetContractListResponse.GetContractListResponseDTO.ContractListType = ContractsList.ToArray();
虽然a = 1,b = 2,c = 3,d = 4;我的回答就像
<name>D</name>
<name>D</name>
<name>D</name>
<name>D</name>
当我调试时,在响应之前我可以看到conractsList中的所有名称,但是当ToArray运行时,所有名称都转换为&#34; D&#34;,这是最后一个。
我无法找到解决方案。请帮帮我。
答案 0 :(得分:4)
使用.NET / C#,您不是将对象本身添加到列表中,而是添加对象的引用。您的代码将添加相同的引用4次并修改引用。您需要克隆该对象并更改其属性,然后再将其添加到列表中以实现所需的结果。
尝试这种模式。
$_
MSDN提供了一个很好的implementing a Deep copy of your object示例。