c# aufeinmal Fehler der vorher nicht da war?
Hallo,
als ich das letzte mal ein meinem Projekt gearbeitet habe gab es keine Probleme aber auf einmal krieg ich bei dem teil ein error(wenn ich auf starten drücke erst):
List<string> lines = File.ReadAllLines(path).ToList();
foreach (var line in lines)
{
string[] entries = line.Split(',');
user newuser = new user(entries[0], entries[1]); //fehler
comboBox1.Items.Add(entries[0]);
userlist.Add(newuser);
}
da steht dann immer:
System.IndexOutOfRangeException: "Der Index war außerhalb des Arraybereichs."
vielen dank im voraus!
5 Antworten
Wenn die hier verarbeitete Zeile
string[] entries = line.Split(',');
kein Komma beinhaltet, hat das Array nur einen Eintrag. Somit gibt es auch keinen Index 1, den du in der Folgezeile versuchst, aus dem Array zu ziehen.
Bei solchen Operationen ist es ratsam, erst zu prüfen, wie viele Einträge das Array nun hat, bevor man versucht, auf Indizes zuzugreifen, die womöglich nicht existieren.
if (entries.Length > 1)
{
// ...
}
Das bedeutet du hast ein Array und versuchst auf einen Index zuzugreifen den es nicht gibt. Im deinem Fall versuchst du den zweiten Eintrag von entries zu bekommen, der existiert aber nicht wenn in lines kein Komma vorhanden ist. Um das zu beheben könntest du einen try-catch block machen, oder du führst den Code wie er da steht erst aus, nachdem du dich mit einer If-Abfrage vergewissert hast dass entries auch genug Einträge hat...
entries[1]
wird halt nicht immer existieren.
Lass dir
line
einfach Ausgeben, bevor du splittest. Ist kein Komma drinnen gibt's auch keinen Split.
user newuser = new user
kann das sein dass
user newuser = newuser
sprich gehört eigentlich zusammen
jetzt hab ich den Ordner wo alles gespeichert war gelöscht jetzt geht's wieder obwohl ich am code nichts geändert hab hmm
Das ist doch ganz normal, dass das Auftreten von Fehlern auch von den Eingangsdaten abhängt.
Du hattest früher einfach nicht gut getestet.