Lista c# program formularzowy

0

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.

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1