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

C#List AddRange-是否通过引用复制add的项,c#,.net,list,addrange,C#,.net,List,Addrange,比如说,我有三张清单 List<int> l1 List<int> l1,l2,l3 列表l1 列表l1、l2、l3 所有3个列表都有许多项 我想把它们全部添加到一个列表中 List<int> finalList finalList.AddRange(l1) , similarly for l2 and l3. List finalList AddRange(l1),类似于l2和l3。 在执行finalList.AddRange时,它是复制l1、l2、

比如说,我有三张清单

List<int> l1
List<int> l1,l2,l3
列表l1
列表l1、l2、l3
所有3个列表都有许多项 我想把它们全部添加到一个列表中

List<int> finalList
finalList.AddRange(l1) , similarly for l2 and l3.
List finalList
AddRange(l1),类似于l2和l3。

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

如果希望复制引用而不是数据,请将整数列表包装到一个类中,如下所示:

    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 
公共类项目列表
{
公共列表ListofIts{get;set;}
公共项目列表()
{
ListOfInts=新列表();
}
}
然后按如下方式添加它们:

    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 
ItemsList l1=新的ItemsList();
l1.ListOfInts=新列表{1,2,3,4,5,6}//或者里面的任何数据
//l2和l3也一样
List finalList=新列表();
最后添加(l1)//添加对ItemsList类的引用

希望这有用。

您使用的是整数,因此会复制值。即使它只是复制了一个对原始整数的引用,引用本身也会占用空间。如果它不是int,而类是Employee,你是说它不会复制数据而只做一个ref。我担心我的内存使用情况,这就是我提出这个问题的原因,如果它复制数据,我希望避免添加到finalList中。(将内存使用量减少一半)。谢谢你帮助我,谢谢阿里。有帮助。