gpt4 book ai didi

C# 按值复制数组

转载 作者:可可西里 更新时间:2023-11-01 07:49:53 24 4
gpt4 key购买 nike

我有一个类型化数组 MyType[] types;我想制作这个数组的独立副本。我试过了

MyType[] types2 = new MyType[types.Length] ;

types2 = types ;

但这创建了对第一个的引用。然后我尝试了

Array.Copy( types , types2 , types.Length ) ;

但我有同样的问题:更改第一个数组中的值也会更改副本中的值。

如何制作数组、IList 或 IEnumerable 的完全独立副本或深拷贝?

最佳答案

根据第一篇文章,他所需要的只是“数组的独立副本”。对 shallowCopy 数组本身的更改不会出现在 types 数组中(意思是元素分配,这实际上是他在上面展示的,尽管他说的是“深复制”)。如果这适合您的需要,它将具有最佳性能。

MyType[] shallowCopy = (MyType[])types.Clone();

他还提到了一个“深拷贝”,它对于不是递归值类型原语聚合的可变类型来说是不同的。如果 MyType 实现了 ICloneable,这对于深度复制非常有效:

MyType[] deepCopy = (MyType[])Array.ConvertAll(element => (MyType)element.Clone());

关于C# 按值复制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1215198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com