我有一个类型数组MyType[] types;
我想制作这个数组的独立副本。我试过这个
MyType[] types2 = new MyType[types.Length] ;
types2 = types ;
但这会创建对第一个的引用。然后我尝试了
Array.Copy( types , types2 , types.Length ) ;
但我有同样的问题:更改第一个数组中的值也会更改副本中的值。
如何制作 Array、IList 或 IEnumerable 的完全独立或深层副本?
根据第一篇文章,他所需要的只是“数组的独立副本”。更改为shallowCopy
数组本身不会出现在types
数组(意思是元素分配,这确实是他上面显示的,尽管说“深复制”)。如果这适合您的需求,它将具有最佳性能。
MyType[] shallowCopy = (MyType[])types.Clone();
他还提到了“深层复制”,这对于不是基元的递归值类型聚合的可变类型来说是不同的。如果MyType
实施ICloneable
,这对于深层复制非常有用:
MyType[] deepCopy = (MyType[])Array.ConvertAll(element => (MyType)element.Clone());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)