c # Wie bekomme ich das letzte Mal in foreach-Anweisung? [Duplikat]

7
%Vor%

orderedtable ist eine Datentabelle

weiß jemand, wie man herausfinden kann, ob wir auf der letzten foreach Iteration sind? Bitte beachten Sie, dass ich Duplikate in orderedtable

habe     
JOE SKEET 17.01.2011, 19:42
quelle

9 Antworten

7

Das foreach -Konstrukt weiß so etwas nicht, da es gleichermaßen für unbeschränkte Listen gilt. Es hat einfach keine Möglichkeit zu wissen, was ein letzter Gegenstand ist.

Sie können den manuellen Weg jedoch auch iterieren:

%Vor%     
Joey 17.01.2011, 19:45
quelle
16

Die korrekte -Methode, die in allen -Fällen funktioniert, verwendet IEnumerator<T> direkt:

%Vor%

Diese Methode funktioniert auch dann, wenn Ihre Sammlung keine Count -Eigenschaft hat, und selbst wenn dies der Fall ist, ist diese Methode effizienter, wenn die Eigenschaft Count langsam ist.

    
Mehrdad 17.01.2011 19:46
quelle
3

Ein alternativer Ansatz, von dem ich nicht glaube, dass ihn jemand gepostet hat. Dies funktioniert gut, wenn Sie die Anzahl nicht im Voraus wissen.

%Vor%     
Nelson Rothermel 17.01.2011 19:49
quelle
2

Sie müssen eine reguläre for-Schleife verwenden, wenn Sie beim letzten Element ein anderes Verhalten haben möchten.

%Vor%

Es ist erwähnenswert, dass "der andere Skeet" eine Implementierung für einen "intelligenten Enumerable" hat, der eine Last-Eigenschaft unterstützt. Siehe den Artikel hier: Ссылка

Damit könntest du so etwas schreiben (ich könnte die Details falsch verstehen, habe es nicht selbst ausprobiert):

%Vor%     
BrokenGlass 17.01.2011 19:44
quelle
0

Anstatt foreach zu verwenden, rufen Sie den IEnumerator auf. Wenn MoveNext null zurückgibt, war der vorherige der letzte.

für würde natürlich auch funktionieren.

    
Erno de Weerd 17.01.2011 19:46
quelle
0

Sie könnten möglicherweise Folgendes tun:

%Vor%

Aber es ist ziemlich ineffizient.

    
GWLlosa 17.01.2011 19:46
quelle
0

Wenn Sie daran interessiert sind, Ihre Iteration im Auge zu behalten, warum verwenden Sie nicht stattdessen for oder foreach ? Dann können Sie einfach Folgendes tun:

%Vor%     
George Johnston 17.01.2011 19:45
quelle
0

Der von Ihnen gepostete Code ist identisch mit:

%Vor%

Wenn das nicht das tut, was Sie wollen, müssen Sie erklären, was lastTime tut.

    
Dour High Arch 17.01.2011 19:53
quelle
0

Wenn ich Ihre Frage verstehe, hilft das?

%Vor%     
Ross Holland 07.06.2012 20:30
quelle

Tags und Links