Entwickler-Ecke

C# - Die Sprache - Warum ArgumentOutOfRangeException


DrHoas - Mi 06.04.11 19:55
Titel: Warum ArgumentOutOfRangeException
Hallo,

ich hab


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
                List<string> scListe = new List<string>(anzahlScs);
                System.Diagnostics.Debug.WriteLine(nscListe.Capacity);
                System.Diagnostics.Debug.WriteLine(Daten.GetAttribute(0));
                for (int i = 0; i < anzahlScs; i++)
                {
                    scListe[i] = Daten.GetAttribute(i);
                }

Capacity ist 2, System.Diagnostics.Debug.WriteLine(Daten.GetAttribute(0)); liefert mir einen Wert. In der For-Schleife bekomme ich aber schon für i=0 eine ArgumentOutOfRangeException. Warum?

Dank und Gruß

Philipp

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt


jaenicke - Mi 06.04.11 19:58

Und welchen Wert hat anzahlScs?
// EDIT:
Ok, ich habe in der Doku gelesen, dass der Parameter die Kapazitätsangabe ist.


Christian S. - Mi 06.04.11 19:58

Hallo!

Die Kapazität ist nicht gleich der Anzahl der Objekte, die sich in der Liste befinden. Es befinden sich immer nur so viele Elemente, wie Du explizit mit z.B. Add hinzugefügt hast. Ich zitiere da die Doku mal zu:
Zitat:
List<T>.Capacity-Eigenschaft

Ruft die Gesamtzahl der Elemente ab, die die interne Datenstruktur ohne Änderung der Größe aufnehmen kann, oder legt diese Anzahl fest.


Dein Code wird dadurch aber nur unwesentlich anders: In der Schleife einfach die Add-Methode benutzen.

Grüße
Christian


DrHoas - Do 07.04.11 11:07

tut! Danke.

Philipp