Chciałabym usunąć elementy z listy ale równocześnie dodać je do nowej listy, jak to zrobi ć? Przy każdej próbie zwraca mi wartość null dla nowej tablicy.
0
1
var lbg = new List<BryłaAbstrakcyjna>(LBG.Count); //LBG-lisa brył geometrycznych
this.LBG = lbg;
LBG.AddRange(lbg);
LBG.Clear();
line-by-line czemu ci się to psuje
1: Tworzysz listę lbg
o rozmiarze LBG.Count
2: LBG
wskazuje na to samo co lbg
// tutaj istotna rzecz
3: LBG
rozszerzasz o całość lbg
(a LBG wskazuje na lbg
, więc wychodzi ci jakby 2x lbg
)
i czyścisz LBG
, a zatem LBG
oraz lbg
Przykład
var list1 = new List<int> { 1, 2, 3 };
Console.WriteLine(string.Join(",", list1));
var list2 = new List<int> { 10, 20, 30 };
Console.WriteLine(string.Join(",", list2));
Console.WriteLine();
list1 = list2;
Console.WriteLine(string.Join(",", list1));
Console.WriteLine(string.Join(",", list2));
Console.WriteLine();
list1.AddRange(list2);
Console.WriteLine(string.Join(",", list1));
Console.WriteLine(string.Join(",", list2));
Console.WriteLine();
list1.Clear();
Console.WriteLine(string.Join(",", list1));
Console.WriteLine(string.Join(",", list2));
Console.WriteLine(list1.Count);
Console.WriteLine(list2.Count);
Console.WriteLine("end");
1,2,3
10,20,30
10,20,30
10,20,30
10,20,30,10,20,30
10,20,30,10,20,30
0
0
end
A ty nie chcesz zrobić czegoś tego typu?
Tworzysz nową listę, przepisujesz do niej starą i czyścisz starą
var list1 = new List<int> { 1, 2, 3};
var list2 = new List<int>(list1);
Console.WriteLine("List1 " + string.Join(",", list1));
Console.WriteLine("List2 " + string.Join(",", list2));
Console.WriteLine();
list1.Clear();
Console.WriteLine("List1 " + string.Join(",", list1));
Console.WriteLine("List2 " + string.Join(",", list2));
List1 1,2,3
List2 1,2,3
List1
List2 1,2,3