You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何复制或克隆数组并修改,且不会影响原数组?

问题原因

数组属于引用类型,你写的string[] new_words = words;只是把原数组的内存引用地址赋值给了新变量,两个变量实际指向堆内存中的同一个数组实例,因此修改任意一方的元素都会同步影响另一方。

正确复制方法

下面给出几种C#中实现数组浅拷贝(完全满足你的string数组使用需求)的常用方案:

  • 方案1:使用Array.Clone()方法
    该方法会直接创建原数组的浅拷贝,返回值需要强转为对应数组类型:
    string[] new_words = (string[])words.Clone();
    new_words[1] = "hi!"; // 仅修改新数组,原数组不受影响
    
  • 方案2:使用Array.Copy()方法
    先初始化长度相同的新数组,再通过Copy方法批量复制元素:
    string[] new_words = new string[words.Length];
    Array.Copy(words, new_words, words.Length);
    new_words[1] = "hi!";
    
  • 方案3:使用LINQ的ToArray()扩展方法(需引入using System.Linq;)
    写法更简洁:
    string[] new_words = words.ToArray();
    new_words[1] = "hi!";
    

注:以上三种均为浅拷贝实现,对于当前的string类型数组完全够用;如果后续操作的是自定义引用类型数组,且需要修改数组元素的内部属性时不影响原数组,需要额外实现深拷贝逻辑。

内容的提问来源于stack exchange,提问作者Dranreb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 14:36:02