Edytuj: Opps, napisał zły test na odwrót, moje przeprosiny za złą odpowiedź. Wykonuje bufor po przeprowadzeniu testu poprawności (użycie przelicznika zwróconego przez Reverse())
Wygląda na to, że metoda odwrotnego rozszerzenia działa tylko wtedy, gdy kolekcja jest wypełniona. Podczas korzystania z zwrotu z inwestycji nic nie robi.
Wystąpił problem przy użyciu odwrotnej myśli, że musi buforować, aby działał, okazało się, że nie działa z wydajnością. Po prostu go przepuszczaj i nic nie rób. poniżej jest mój kod testowy.
[TestMethod]
public void loopTest()
{
var series = this.GetSeries();
series.Reverse();
foreach (var l in series)
{
Debug.WriteLine(l);
}
}
private IEnumerable<long> GetSeries()
{
var series = new List<long>() { 1, 2, 3, 4 };
foreach (var entry in series)
{
Debug.WriteLine(entry);
yield return entry;
}
}
Odwróć, nie wołaj funkcji GetSeries, wszystkie rozmowy o buforowaniu na tym forum wygląda z powietrza.
Nie ma IEnumerable. Metoda odwrotna, jakie kiedykolwiek widziałem (i MSDN wydaje się wspierać to)! –
Noldorin
To dlatego, że jest to metoda rozszerzenia: http://msdn.microsoft.com/en-us/library/bb358497.aspx –
@Noldorin: Enumerable.Reverse jest metodą rozszerzenia na IEunumerable –