Wpis z mikrobloga

Czy w przypadku, gdy mam metodę która przyjmuję listę jako parametr, żeby w tej metodzie tę listę zdekolejkować (jest takie słowo w ogóle? Chodzi mi o pobranie pierwszego elementu, potem usunięcie go itd aż się lista skończy), to wystarczy że zmienną utworzę w formie List nazwa = parametr; czy lepiej zrobić new List() i dodawać po kolei elementy?

#csharp #naukaprogramowania
  • 6
@Goglez:

IQueue, jak chcesz, żeby Ci pilnowało tej kolejki,

Jak obiekt z listy wybierasz na podstawie zmiennych parametrów, to IList (potrzebujesz kolejności i pozycji elementów)

Jak potrzebujesz tylko wiedzieć co było w liście i tylko po niej iterować, to: IEnumberable

ICollection (jak chcesz modyfikowac kolekcję i ważna jest kolejność, lub pozycja w kontenerze).
@vorio: @MaGajwer: Dzięki, nie wiedziałem o klasie queue, a faktycznie dużo to dało w moim przypadku. Pytanie jednak pozostało, zwykłe przypisanie jednej queue do drugiej wystarczy, czy lepiej utworzyć nową i załadować pokolei obiekty z tej kolejki?
@Goglez: Queue chyba się "buduje" jak lista, więc to kwestia referencji i drugiej kopii w pamięci. Ale niech mnie ktoś poprawi jeśli się mylę.

Np.,

var list = new List()
{
"AAA",
"BBB"
};

var newLilst = list;

list.Add("CCC");

w newList znajdziesz "CCC".

Wszystko musi wynikać z kontekstu i potrzeby.

Z drugiej strony, widziałem już kilka takich Twoich pytań, zastanawiam się dlaczego rozkminiasz tak niskopoziomową wydajność. Piszesz coś skrajnie wydajnego?
IEnumerable enumerable = new string[]
{
"AAA",
"BBB"
};

var someList = enumerable.ToList();

Teraz jak chcesz coś dodać do enumerable, to musisz zrobić na nim ToList() i obie listy będą oddzielnymi bytami.

IList mplementuje IEnumerable.
Z drugiej strony, widziałem już kilka takich Twoich pytań, zastanawiam się dlaczego rozkminiasz tak niskopoziomową wydajność. Piszesz coś skrajnie wydajnego?


@MaGajwer: Program, który wykona wiele prostych operacji w najkrótszym czasie.