C#List AddRange - 它是否通过引用复制add项

时间:2017-02-02 01:00:47

标签: c# .net list addrange

说,我有3个列表

List<int> l1
List<int> l1,l2,l3

所有3个列表都有很多项目 我想将所有这些内容添加到单个列表中

List<int> finalList
finalList.AddRange(l1) , similarly for l2 and l3.

在执行finalList.AddRange时,它是否会复制l1,l2,l3中的项目,还是仅仅引用这些项目?如果它复制我想避免AddRange来节省内存,因为列表很大。

1 个答案:

答案 0 :(得分:0)

如果要复制引用而不是数据将整数列表包装成如下所示的类:

    public class ItemsList
    {
        public List<int> ListOfInts {get; set;}

        public ItemsList()
        {
            ListOfInts = new List<int>();
        }
    }

然后添加如下:

        ItemsList l1 = new ItemsList();
        l1.ListOfInts = new List<int> { 1, 2, 3, 4, 5, 6 };//or whatever data inside

        //same for l2, l3

        List<ItemsList> finalList = new List<ItemsList>();
        finalList.Add(l1);//Your adding references to ItemsList class 

希望这很有用。