复制列表对象C#

时间:2018-11-14 04:16:32

标签: c#

我有两个列表对象,并且试图将一个列表的值复制到另一个列表中。理想的编码是这样:

            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”,但这在智能感知中也没有暴露。在这种情况下,我会错过指针...:)

1 个答案:

答案 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);