Оба моих списка изменяются, и я стараюсь избегать такого поведения ...Изменения в обоих списках C#
Что здесь есть?
У меня есть «большой» список, и я хочу удалить все элементы, которые присутствуют в itemsToRemoveList, но без изменения исходного списка.
я упростил пример кода ..
List<string> aList = new List<string>(){"My","name","is", "jeff"}; // cached full list
List<string> bList = aList; // initial copy
List<string> itemsToRemoveList = new List<string>(){"jeff"};
bList.RemoveAll(itemsToRemoveList.Contains); // remove only from copy
foreach (string s in aList)
{
Console.Write(s + " "); // expect "my name is jeff"
}
Console.WriteLine();
foreach (string s in bList)
{
Console.Write(s + " "); // expect "my name is"
}
// however this modifies both collections.
Console.ReadLine();
Это не «копия», которая просто создает другую ссылку на тот же список. – juharr
Вот очень полезная ссылка, которая охватывает лучший способ сделать это, если ваш список имеет тип значения или ссылочный тип: http://stackoverflow.com/questions/222598/how-do-i-clone-a-generic-list -in-c – sr28
@ sr28 Что касается создания нового списка, были клонированы объекты или копии другого списка. Здесь это действительно не нужно, поскольку 'string' неизменен. – juharr