C# Удалить элемент в копии List, не изменяя оригинальный List
подскажите, пожалуйста, как я могу удалить элемент в List#2, который копирую с List#1, но чтобы List№1 не изменялся? Моя задача, удалить один элемент из списка. Для этого я делаю копию оригинального, и удаляю в копии, чтобы в следующий раз все элементы снова были целы. Но каждый раз, в оригинальном списке стает на один элемент меньше, почему так?
// List allelements {"Alina","Marina","Artem","Anton")
public async Task giver(name, List<string> allelements)
{
var copylist = allelements;
copylist.Remove(name);
var k = copylist.OrderBy(x => rnd.Next()).Take(2);
string b = "";
foreach (string str in copylist)
{
b += str + " ";
}
// После этого в каждом следующем вызове в allelements удаляется элемент name.
// Почему удаление не производится только в copylist?
}
await giver(name, allelements);
Ответы (1 шт):
Автор решения: aa_talanin
→ Ссылка
Вы делаете не копию списка, а копию ссылки на все тот же лист. Создать новый можно, например, так:
var copylist = new List<string>(allelements);
Почитайте про разницу между типами значений и ссылочными типами. У них несколько разный смысл у оператора присваивания.