我有两个列表对象,并且试图将一个列表的值复制到另一个列表中。理想的编码是这样:
List<List<int>> x = new List<List<int>>();
List<int> temp = new List<int>();
List<List<int>> y = new List<List<int>>();
int myCount;
foreach (List<int> t in y)
{
myCount = t.Count;
for(int w = 0; w <= t.Count; w++)
{
temp = new List<int>();
temp = t;
temp.Insert(w,n);
x.Add(temp);
}
}
很明显,temp = t;不会是值副本,但是使此分配成为值副本而不是引用副本的最简单方法是什么。
我尝试了t.ToList(),但是intellisense没看到(在MSN帮助页面的列表定义中也没有列出)。我尝试了“ MemberwiseClone”,但这在智能感知中也没有暴露。在这种情况下,我会错过指针...:)
答案 0 :(得分:2)
public static T DeepClone<T>(T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
return (T)formatter.Deserialize(ms);
}
}
temp = DeepClone(t);