Erstellen leeres array und add-Wert bewirkt, dass "Array index out of range"
Was ist hier falsch?
string[] keysDictionary = new string[]{};
keysDictionary [0] = "test";
Bekomme ich
System.IndexOutOfRangeException
Array index out of range.
- Denn das ist ein array mit 0 der Länge, die Sie tun sollten
new string[length]
- Brauche ich die Länge? Oder kann ich ein leeres array erzeugen und fügen Sie später die Werte (ich weiß nicht, wie viele Werte vor)?
- verwenden
List
statt - In diesem Fall müssen Sie List<string> kein array
- Sie sollte sich mit
List<T>
. Es ist eine array-artige Struktur, die ermöglicht das hinzufügen von mehreren Elementen. - Ich war zu viel in
php
. Hier können Sie dies tun. - Ein array fester Größe. Vielleicht möchten Sie verwenden eine
List<string>
. - Kann ich verwenden und index bei der Arbeit mit
List<string>
? - ja, Sie können einen index mit
List<string>
,MyList[3]
oder ähnliches. - obwohl
C#
ist eine high-level Sprache, die es immer noch einige sehr grundlegende Konstrukte, wie Feste Felder, welche Sie verwenden möchten. Nur arrays verwenden (ie, Typ [] - syntax, wieint[]
), wenn Sie eine fixe Kollektion, die Sie gehen, um die Iteration über viele Male. Meiner Meinung nach, für alle anderen Fällen ist der performance-Gewinn ist nicht der Mühe Wert, die Verfolgung der array-Größe manuell.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man nichts hinzufügen, um eine 0-length-array. Sie sind im wesentlichen versucht, um den Wert des ersten Elements eines Arrays ohne Elemente. Verwenden Sie so etwas wie eine Liste, anstatt wenn Sie dies tun wollen, arrays können nicht geändert werden.
Durch Angabe von {} definieren Sie diese als ein leeres array.
Somit sollten Sie entweder die Größe bestimmen als:
Oder
Initialisieren wie diese:
new string[]{}
schafft null-Länge-arrayMüssen Sie die Größe des Arrays.
z.B.
Wenn Sie möchten, ein Array, das dynamisch seine Größe ändert, wenn Sie das hinzufügen von Werten eine Liste verwenden statt.
ArrayList
ist ein bit .net 1.1, häufiger würden SieList<T>