2011-07-19 9 views

Odpowiedz

6

System.Linq.Enumerable.Reverse() działa na wszystkich klasach, które implementują IEnumerable, gdzie jako System.Array.Reverse() działa tylko na tablicach. Jeśli wiesz, że masz tablicę, nie ma nic złego w korzystaniu z System.Array.Reverse().

+0

Nie tylko nie ma w tym nic złego, ale prawdopodobnie ma lepszą wydajność ... –

+1

@Thomas: Jeśli wynikiem powinien być tablica zamiast "IEnumerable": agreed. –

10

Oprócz tego, co Daniel powiedział, System.Linq.Enumerable.Reverse() faktycznie tworzy kopię, iteruje ją od końca do początku, gdy transformacja ma miejsce w przypadku System.Array.Reverse().

+0

Uwagi dotyczące usługi MSDN (http://msdn.microsoft.com/en-us/library/bb358497.aspx): "Ta metoda jest implementowana za pomocą odroczonego wykonywania. Bezpośrednia wartość zwracana jest obiektem, który przechowuje wszystkie informacje, które są wymagane do wykonania akcji ... "" Ta metoda sortowania nie bierze pod uwagę samych wartości rzeczywistych przy ustalaniu kolejności, lecz po prostu zwraca elementy w odwrotnej kolejności, z której są one produkowane przez podstawowe źródło. " Skomplikowany sposób mówienia o tym, co skomentowałeś, myślę ... :) Dzięki! – mbrownnyc

+2

@mbrownnyc dobrze, MSDN nie mówi wprost, że 'IEnumerable.Reverse' tworzy kopię, ponieważ nie jest to bezwzględnie konieczne dla tablic. Znalazłem to przez dekompilację złożeń. – Andrey

0

Jeśli wydajność ma dla Ciebie znaczenie, użyj Array.Reverse(). System.Linq.Enumerable.Reverse() ma tę zaletę, że działa na każdym arkuszu kalkulacyjnym, takim jak tablice, listy i tak dalej.

Powiązane problemy