如何在.NET Framework 4.7中复用List<byte>实现元素深度复制
解决方案:复用List并实现深度复制
咱们先理清楚核心需求:复用现有的list1对象,把list2的所有内容完整复制进去,而且是深度复制。首先得明确一个关键点:byte是值类型,所以对它的复制本身就是“深度复制”——复制的是实际的数值,而非引用,两个列表的元素不会互相影响。
要实现复用list1且完成复制,只需要两步:
- 第一步:清空
list1的现有内容,保留原对象实例 - 第二步:将
list2的所有元素复制到list1中
完整示例代码
List<byte> list1 = new List<byte>() { 1, 2, 3, 4, 5, 6 }; List<byte> list2 = new List<byte>() { 7, 8, 9, 10, 11, 12 }; // 执行复制操作 list1.Clear(); // 清空list1原有元素,复用原列表对象 list1.AddRange(list2); // 将list2的所有byte元素复制到list1中
为什么这是深度复制?
因为byte属于值类型,AddRange方法会把list2里的每个byte值完整复制到list1的新元素位置上。之后你修改list1里的任何元素,都不会影响list2的内容,完全满足深度复制的要求。
额外补充(针对引用类型场景)
如果你的列表存储的是引用类型(比如List<CustomClass>),那上面的方法就只是浅复制了。但对于List<byte>这种值类型列表,上面的写法既复用了原列表对象,又完美实现了深度复制的效果。
内容的提问来源于stack exchange,提问作者VansFannel
相关产品推荐
相关产品推荐

