Ändern der Reihenfolge?

7

Gibt es trotzdem eine Foreach durch eine Liste vom Ende bis zum Anfang statt am Anfang zu enden (vorzugsweise ohne die Liste neu zu ordnen).

    
sooprise 23.07.2010, 17:44
quelle

7 Antworten

29
%Vor%

Bearbeiten: Es gibt noch einen weiteren Schritt, wenn Sie sich speziell mit einem List<T> beschäftigen. Diese Klasse definiert ihre eigene Reverse -Methode, deren Signatur nicht mit der Enumerable.Reverse -Erweiterungsmethode übereinstimmt. In diesem Fall müssen Sie den Variablenverweis auf IEnumerable<T> :

"heben" %Vor%     
Bryan Watts 23.07.2010, 17:46
quelle
8

Sie können eine reguläre for-Schleife verwenden, am Ende beginnen und dekrementieren, anstatt am Anfang zu beginnen und zu inkrementieren.

etwas wie:

%Vor%     
Jim 23.07.2010 17:47
quelle
3

Sie möchten wahrscheinlich nichts kompliziertes machen, also würde ich vorschlagen, nur eine for-Schleife zu verwenden.

Wenn es jedoch irgendwie eine Anforderung wäre, können Sie sicherlich Ihre implementieren eigene Iteratoren für das Iterationsverhalten von benutzerdefinierten Listen.

    
womp 23.07.2010 17:49
quelle
2

Es hängt davon ab, was Sie mit list meinen.

  • List<T> ? Nein, es sei denn, Sie verwenden Linq und die Funktion Reverse ().
  • Ihre benutzerdefinierte Sammlung? Implementieren Sie einfach IEnumerator wie Sie will.
Andrey Taptunov 23.07.2010 17:50
quelle
1

Fehlerüberprüfung wurde aus Gründen der Übersichtlichkeit weggelassen. Verwenden Sie eine benutzerdefinierte Implementierung von IEnumerable und IEnumerator . Dies vermeidet unnötiges Kopieren.

%Vor%

Ich würde empfehlen, das Codebeispiel zu generalisieren, um Generika zu verwenden. Auf diese Weise können Sie dies für jeden Containertyp verwenden.

    
Jorge Ferreira 23.07.2010 18:06
quelle
0

nicht c #, aber Sie können es auch tun: -)

%Vor%     
Fredou 23.07.2010 17:49
quelle
0
%Vor%

nicht versucht, sollte aber funktionieren.

    
Tiju John 23.07.2010 20:55
quelle

Tags und Links