Hallo,
ich bin gerade am Verzweifeln.
Habe eine Hashtable und möchte mit Add(key,object) Werte hinzufügen.
Das ganze Läuft in einer for each.
foreach(MyEntity myEnity in MyEntities)
{
myHashtable.Add(myEntityId, myEntity);
}
Nehmen wir an MyEntities hat 4 Objekte.
jetzt werden brav vier Einträge in die Hashtable geschrieben, jedoch wird bei jedem Durchlauf die myEntity-Objekte aller anderen Einträge auf das aktuelle myEnitity-Objekt geändert.
Wie kann ich die jeweiligen Enitities unter dem entsprechenden Schlüssel speichern, ohne dass alle auf den gleichen Wert (nämlich auf den Wert des letzten Durchlaufs) gespeichert werden?
Besten Dank im Voraus für Eure Hilfe
antoschka
Sorry, habe den punkt vergessen:
Muss natürlich heißen:
foreach(MyEntity myEnity in MyEntities)
{
myHashtable.Add(myEntity.Id, myEntity);
}
Das mit dem Dictionary probier ich mal... Nichts desto trotz, warum klappt das denn mit der Hashtable nicht??
Vielen für Euer Feedback
antoschka
Debug halt mal rein, dann siehst du wo es hängt.
Hallo antoschka,
da du selber schon die Referenzvariablen ansprichst. Wenn in MyEntities vier Unterschiedliche Objekte enthalten sind und diese Objekte unterschiedliche Ids haben, dann sollte es klappen. Wenn in MyEntities dagegen vier mal die gleiche Referenz enthalten ist, bekommst du den beschriebenen Fehler.
Du solltest Dictionary nehmen, auch wenn das bezüglich es Fehlers natürlich nichts ändert.
herbivore
Hallo,
Oh man habe einen ganz fiesen Fehler gemacht und nicht entdeckt. Das Beispiel war wesentlich komplexer und hatte eine Anweisung drin die abstrahiert aufs Wesentliche ungefähr so aussieht.
foreach(MyEntity myEnity in MyEntities)
{
myHashtable.Add(myEntity.Id, otherValue ?? myEntity);
}
Beim Drüberlesen bin ich immer davon ausgegangen, dass otherValue = null ist und myEntity genommen wird. leider war otherValue aber initialisiert und dementsprechend nicht null.
Schande über mich, dass ich Euch mit dem Zeug belästigt habe 🙁
Beste Grüße und vielen Dank trotzdem fürs Lesen
antoschka