【发布时间】:2017-05-31 08:06:44
【问题描述】:
我必须将一个 Arraylist 复制到一个新的 Arraylist。在旧的 Arraylist 中有多个元素在运行时发生变化。其中之一是 Arraylist 中的模块设置参数。我想深度复制数组列表的值,以便可以将其用于撤消操作。我尝试使用 Binaryformater 和 Datacontract。对于不可序列化的对象,两者都不能完成。有人可以帮忙吗?
【问题讨论】:
我必须将一个 Arraylist 复制到一个新的 Arraylist。在旧的 Arraylist 中有多个元素在运行时发生变化。其中之一是 Arraylist 中的模块设置参数。我想深度复制数组列表的值,以便可以将其用于撤消操作。我尝试使用 Binaryformater 和 Datacontract。对于不可序列化的对象,两者都不能完成。有人可以帮忙吗?
【问题讨论】:
如果没有更多信息,很难确切地说出了什么问题,但 ArrayList 本身是可序列化的。但是,如果您使用的是自定义对象,则需要将其标记为可序列化才能使序列化工作。见:Serialize ArrayList of Objects
【讨论】:
使用内存流和二进制格式化程序 像
`public T Clone<T> (T obj)
. {
. using(var ms = new MemoryStream())
. {
. var formatter = new BinaryFormatter();
formatter.Serialize(stream, obj);
stream.Position =0;
return (T)formatter.Deserialize(stream);
}
. }’
希望对你有帮助
【讨论】: