Wie um zu überprüfen, ob ein Wert in einer Liste vorhanden ist (vor get out of range)
Habe ich diese Liste :
IList<Modulo> moduli = (from Modulo module in Moduli
select module).ToList();
und ich fahren mit für (Mitteilung i=i+2) :
for(int i=0; i<moduli.Count; i=i+2)
{
}
nun, ich habe zu prüfen, ob moduli[i+1] existieren, (so, das nächste element), sonst ich werde eine System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
.
Wie kann ich es überprüfen? Versucht mit :
if(moduli[i+1] != null)
{
}
aber es nicht funktioniert!
- Um zu beginnen, ändern Sie die loop-Zustand zu
i<moduli.Count
(nicht<=
). - richtig! danke! 😉
InformationsquelleAutor markzzz | 2012-01-18
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie auf die gleiche Weise, wie Sie Ihre Schleife Zustand:
Hinweis: die
<
statt<=
, das ist ein Fehler im ursprünglichen code.Wie etwa:
sollte dies nicht der Fall sein, wenn Sie Ihre i+1 bewirkt eine ArgumentOutOfRangeException -
Übrigens, der Grund, warum dies nicht funktioniert:
ist, dass die ArgumentOutOfRangeException wird ausgelöst, sobald Sie den check.
Wie etwa
Linq kann die Arbeit für Sie tun 🙂
Sehr einfach: