2017-02-02 2 views
2

Сай, у меня есть 3 списковC# Список AddRange - это скопировать элементы СДВ по ссылке

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, чтобы сохранить память, поскольку списки большие.

+2

Вы используете целое число, поэтому значения копируются. Даже если он просто скопировал * reference * в исходное целое число, сама ссылка будет использовать пробел. – Rob

+0

Если это не int и класс сказать Employee, вы говорите, что он не будет копировать данные и делать только ссылку. Меня беспокоит использование памяти, поэтому я поднял этот вопрос и хочу не добавлять в finalList, если он копирует данные. (уменьшает использование памяти наполовину). Спасибо за помощь. – PickUpTruck

ответ

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 

Надеется, что это было полезно.

+0

Спасибо Али. Полезно. – PickUpTruck

+0

Ваш прием :) –

Смежные вопросы