Laden...

Benutzung von Dictionary

Erstellt von x-0815 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.908 Views
Thema geschlossen
X
x-0815 Themenstarter:in
13 Beiträge seit 2011
vor 13 Jahren
Benutzung von Dictionary

Ich probiere gerade schon eine Weile herum, aber mittlerweile bin ich mir schon gar nicht sher sicher, ob ich meine Problem mit Dictionary überhapt lösen kann.

Ich habe ein Dictionary<string, List<MyClass>> mit 15 Elementen.

Später möchte anhand des Keys "string" der Liste "List<MyClass>" neue Werte hinzufügen.
Dafür bäuchte ich den Zugriff auf die Methode "add" der Liste aus aus dem Value des Dictionarys.
Geht das?

Die Struktur kann man im Anhang betrachten....

5.658 Beiträge seit 2006
vor 13 Jahren

Ja, das funktioniert:


Dictionary<string, List<MyClass>> dict = new Dictionary<string, List<MyClass>>();
// [Dictionary befüllen...]
dict[key].Add(myClassInstance);

Mußt halt nur sicherstellen, daß key auch im Dictionary existiert und die Liste nicht null ist, sonst bekommst du eine Exception.

Weeks of programming can save you hours of planning

X
x-0815 Themenstarter:in
13 Beiträge seit 2011
vor 13 Jahren

Das dachte ich auch zuerst.
Aber so fügt er dem Dictionary ein neues Element ein.
Ich will ja dem Value des Dictionarys "List<MyClass>" eines neues Element anhängen.

5.658 Beiträge seit 2006
vor 13 Jahren

Aber so fügt er dem Dictionary ein neues Element ein.

Dann hast du entweder den Quelltext nicht verstanden, oder nicht ausprobiert.

Weeks of programming can save you hours of planning

B
48 Beiträge seit 2010
vor 13 Jahren

Das dachte ich auch zuerst.
Aber so fügt er dem Dictionary ein neues Element ein.
Ich will ja dem Value des Dictionarys "List<MyClass>" eines neues Element anhängen.

Nein das ist schon korrekt.

X
x-0815 Themenstarter:in
13 Beiträge seit 2011
vor 13 Jahren

Ja, stimmt.
Ich habs gerade isoliert betrachtet.
Dann liegt mein Fehler ganz wo anders.
Vielen Dank!

X
x-0815 Themenstarter:in
13 Beiträge seit 2011
vor 13 Jahren

So Fehler gefunden:

Ich habe einen Dateinamen ohne Erweiterung (.xxx) als Key in Dictionary gelegt und dann aber mit Erweiterung abgefragt.

Wenn man ein Element bei einem Key ablegen will den es gar nicht gibt, wird dieser einfach erzeugt!

Ich wäre jetzt davon ausgegangen, dass dann eine Exception geworfen wird...

5.658 Beiträge seit 2006
vor 13 Jahren

Was heißt, Element in einem Key ablegen? Wenn du einen Key über den Indexer [key] abfragst, und der Key ist nicht vorhanden, dann wird eine Exception geworfen. Man braucht darüber aber nicht zu spekulieren, sondern es steht in der MSDN für jede Methode wann unter welchen Umständen welche Exception geworfen wird.

Weeks of programming can save you hours of planning

X
x-0815 Themenstarter:in
13 Beiträge seit 2011
vor 13 Jahren

So hätte ich das auch gedacht.
War aber nicht so.

Bei mir wurde der neue Key einfach angelegt.
Vielleicht hatte ich ja noch ein anderes Problem...

Wenn interesse besteht, kann ich das ja auch noch isoliert betrachten.

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo x-0815,

War aber nicht so.

doch bei dem von MrSparkle gezeigten Code ist es genauso, wie MrSparkle es beschreibt. Da wird der Indexer zum Abfragen des Werts benutzt. Du hast dich ja schon weiter oben über die Ursache eines Fehler geirrt. Das ist dir hier wieder passiert.

Was anders ist es, wenn man den Indexer zum Setzen eines Werts benutzt. Durch dict[key] = new List <MyClass> (); ist nachher ein Eintrag mit dem Schlüssel key vorhanden, egal ob er vorher da war oder nicht.

Beachte aber bitte [Hinweis] Wie poste ich richtig? Punkt 1.1.1. Wir setzen solche elementare Benutzung von Collections als bekannt voraus.

herbivore

Thema geschlossen