这是一个C#3.0 Winform问题。
我想克隆一个大的(实际上不是很大)复杂的对象。为了懒惰,我将它seralize到MemoryStream并使用BinaryFormatter.UnsafeDeserialize(MemoryStream,null)方法来获取克隆对象。在UnsafeDeserialize()方法内部,始终会抛出OutOfMemory异常。记忆力应该足够了。
我读了一下这个.net错误,但不确定是否是这种情况。
任何人都知道为什么会这样吗?任何工作?感谢。
答案 0 :(得分:2)
也许是一个愚蠢的问题但是你还记得在反序列化之前将MemoryStream倒回到流的开头吗?
也可能有助于分享您的部分代码。
答案 1 :(得分:1)
为什么使用UnsafeDeserialize
代替Deserialize
?
答案 2 :(得分:1)
对象是什么,有多大?
我见过其他有类似问题的人,在某些情况下切换到不同的序列化程序修复它。根据情景,我可以建议几个可能很合适的东西;特别是 - 数据是树还是图? (即儿童对象是指兄弟姐妹或他们的父母?还是仅仅是他们自己的孩子)。
答案 3 :(得分:0)
我建议您尝试使用FileStream,并查看文件的大小。