Ich habe bei der Arbeit Code geerbt, der wirklich schlecht riecht. Ich hoffe, die schmerzloseste Lösung zu finden.
Gibt es eine Möglichkeit zu überprüfen, ob eine beliebige Zahl ein gültiges Element in einem Array ist?
Beispiel - Ich muss überprüfen, ob Array [25] vorhanden ist.
Am liebsten würde ich dies tun, ohne foreach () durch das Array zu führen, um die Zeilen zu finden.
Gibt es eine Möglichkeit, dies zu tun, oder stecke ich mit jeder Schleife fest?
Antworten:
Testen Sie die Länge
quelle
Sie können LINQ auch verwenden, um dies zu erreichen:
quelle
new object[]{ null }.ElementAtOrDefault(index)
wird zurückgegeben,null
da das Element bei 0 istnull
. Die VerwendungElementAtOrDefault
ist keine gute Lösung, um zu überprüfen, ob Array-Indizes vorhanden sind. Diese am Ende hinzugefügte Gleichheitsprüfung macht die Ergebnisse unbestimmbar.array.Length > index
.Was genau meinst du mit "ist ein gültiges Element"? Sie könnten einfach tun:
Dies würde Ihnen sagen, ob 25 ein gültiger Index für das Array ist oder nicht (unter der Annahme einer unteren Untergrenze von 0).
Wenn Sie wissen möchten, ob es nicht null ist oder nicht, verwenden Sie einfach:
(oder eine Kombination aus beiden).
Wenn dies nicht hilft, geben Sie bitte eine genauere Bedeutung von "gültig" für Ihr Problem an.
quelle
Index was outside the bounds of the array
Angenommen, Sie möchten auch überprüfen, ob das Element nicht null ist
quelle
&&
inif (array.Length > 25 && array[25] != null)
, wenn Sie nur mit einer&
wird IndexOutOfRange Ausnahme auslösen. MSDN .quelle
Sie können die Länge des Arrays verwenden und prüfen, ob Ihre beliebige Zahl in diesen Bereich passt. Wenn Sie beispielsweise ein Array der Größe 10 haben, ist Array [25] nicht gültig, da 25 nicht kleiner als 10 ist.
quelle
Sie können lieber eine Liste verwenden, um die Existenz zu überprüfen.
quelle
array.length
Hier erfahren Sie, wie viele Elemente sich in einem Array befindenquelle
Sie können überprüfen, ob der Index kleiner als die Länge des Arrays ist. Dies prüft nicht auf Nullen oder andere ungerade Fälle, in denen dem Index ein Wert zugewiesen werden kann, der jedoch nicht explizit angegeben wurde.
quelle
Sie können die Länge des Arrays überprüfen, um festzustellen, ob Element 25 im Sinne des Arrays gültig ist. Dann können Sie es verwenden
um zu sehen, ob das Array-Element selbst festgelegt wurde.
quelle
Es hört sich sehr danach an, als würden Sie ein Array zum Speichern verschiedener Felder verwenden. Dies ist definitiv ein Code-Geruch. Ich würde es vermeiden, Arrays so oft wie möglich zu verwenden, da sie im Allgemeinen nicht für Code auf hoher Ebene geeignet sind (oder benötigt werden).
Der Wechsel zu einem einfachen Wörterbuch kann kurzfristig eine praktikable Option sein. Wie bei der Verwendung einer großen Eigenschaftstaschenklasse. Es gibt viele Möglichkeiten. Das Problem, das Sie jetzt haben, ist nur ein Symptom für schlechtes Design. Sie sollten versuchen, das zugrunde liegende Problem zu beheben, anstatt nur das schlechte Design zu patchen, damit es vorerst irgendwie funktioniert.
quelle