【发布时间】:2017-05-19 18:16:03
【问题描述】:
我在克隆列表项时遇到问题。
Class Item
{
String Name;
Int Age;
}
比我有一个列表
List<Item> Items = new List<Items>();
如果我现在做这个动作
Item val= Items[i];
现在如果我改变 val 的年龄,它也会改变 Items[i] 的年龄。 如何从列表中克隆项目,因此在更改克隆项目中的值时,列表中的值不会改变? 例如,如果我的班级更大,它包含超过 20 个值。
【问题讨论】:
-
@CircleHsiao 他问的是一项而不是全部
List<> -
m.rogalaski,没错。我只需要从 List
- 中获取一项。
-
“正确克隆”是一个失败的规范。对于您的 特定 类型,您需要构造一个新的
Item并复制值。对于其他类型,答案可能会有所不同,因为您没有指定是需要浅层克隆还是深层克隆,或者根据数据混合使用浅层和深层。 -
最好的方法是要么在你的类型上实现一个接口,将它如何复制自身的确切方式委托给该类型,要么给一个知道如何在特定的特定类型中复制特定类型的单独的工厂/克隆类上下文。
标签: c#