Jeżeli mam:
List<string> myList1;
List<string> myList2;
myList1 = getMeAList();
// Checked myList1, it contains 4 strings
myList2 = getMeAnotherList();
// Checked myList2, it contains 6 strings
myList1.Concat(myList2);
// Checked mylist1, it contains 4 strings... why?
Uruchomiłem kod podobny do tego w Visual Studio 2008 i ustawiłem punkty przerwania po każdym wykonaniu. Po myList1 = getMeAList();
, myList1
zawiera cztery struny, i nacisnął przycisk plus, aby upewnić się, że nie wszyscy byli null.
Po myList2 = getMeAnotherList();
, myList2
zawiera sześć strun, a ja sprawdzane, aby upewnić się, że nie były zerowa ... Po myList1.Concat(myList2);
myList1 zawierał tylko cztery struny. Dlaczego?
źródło
IEnumerable<T>
Myślę, że działa dobrze. Jak już powiedziano, Concat zwraca nową sekwencję i konwertując wynik na List, wykonuje zadanie doskonale.
źródło
Warto również zauważyć, że Concat działa w stałym czasie i w stałej pamięci. Na przykład poniższy kod
podaje następujące wskaźniki czasu / pamięci:
źródło
Wiem, że to stare, ale natknąłem się na ten post szybko myśląc, że Concat będzie moją odpowiedzią. Związek działał na mnie świetnie. Uwaga, zwraca tylko unikalne wartości, ale wiedząc, że otrzymuję unikalne wartości i tak to rozwiązanie zadziałało dla mnie.
Wynik to:
źródło
Spójrz na moją realizację. Jest bezpieczny przed listami zerowymi.
źródło