碰到的list拷贝问题,记录一下
直接 = 。有坑!!!
List<double> value1 = new List<double> { 3, 22, 33, 44, 65 };
List<double> value0 = new List<double>();
value0 = value1;
这样写的话,value0其实是索引的value1,也就是说对value0进行修改操作的话,value1里的值也会被改动。
把一个数据集List复制至到另一个数据集List,介绍如下方法:
方法一,可以使用循环,然后把每一个T添加至另一个集合中去:
var listA = new List<int> { 2, 5, 6, 8, 23, 56, 4 };
var listB = new List<int>();
foreach (int a in listA)
{
listB.Add(a);
}
方法二,使用GetRange方法:
var listA = new List<int> { 2, 5, 6, 8, 23, 56, 4 };
var listB = listA.GetRange(0, listA.Count);
方法三,深度拷贝:
var listA = new List<int> { 2, 5, 6, 8, 23, 56, 4 };
var listB = new List<int>();
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, listA);
ms.Position = 0;
listB = (List<int>)bf.Deserialize(ms);
}
方法四,直接加载法:
var listA = new List<int> { 2, 5, 6, 8, 23, 56, 4 };
var listB = new List<int>(listA);
方法五:使用序列化与反序列化:
var listA = new List<int> { 2, 5, 6, 8, 23, 56, 4 };
var listB = JsonConvert.DeserializeObject<List<int>>(JsonConvert.SerializeObject(listA));