Was ist der schnellste Weg, um die Werte und Schlüssel in C # von einem Wörterbuch in ein anderes zu kopieren?
Scheint es nicht zu sein, ein Wörterbuch.AddRange () - Methode. Kennt jemand eine bessere Methode zum kopieren von Elementen in ein anderes Wörterbuch, ohne die Verwendung einer foreach-Schleife.
Ich bin mit dem System.Sammlungen.Generisches.Wörterbuch. Dieser ist für .NET 2.0.
InformationsquelleAutor der Frage Helephant | 2008-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nichts falsch mit einer for/foreach-Schleife. Das ist alles eine hypothetische AddRange Methode würde es sowieso tun.
Nur die zusätzliche Sorge, die ich hätte, ist mit der Zuweisung von Speicher-Verhalten, weil Sie eine große Anzahl der Einträge kann dazu führen, dass mehrere Umschichtungen und re-hashes. Es gibt keine Möglichkeit zur Erhöhung der Kapazität einer bestehenden Wörterbuch, die durch einen bestimmten Betrag. Könnten Sie besser dran, die Zuteilung eines neuen Wörterbuchs mit ausreichender Kapazität, um sowohl aktuellen, aber Sie müssen noch eine Schleife zum laden mindestens einer von Ihnen.
InformationsquelleAutor der Antwort Mike Dimmick
Gibt es die
Dictionary
Konstruktor, ein weiteresDictionary
.Werden Sie haben, um Sie zu wirken
IDictionary
, aber es ist einAdd()
überlastung, dauertKeyValuePair<TKey, TValue>
. Du bist immer noch mit foreach, aber.InformationsquelleAutor der Antwort ageektrapped
übergeben werden können vorhandene Tier-Wörterbuch-Konstruktor.
InformationsquelleAutor der Antwort Mahendra Thorat
For fun, habe ich diese extension-Methode zum Wörterbuch. Sollte dies bei einer tiefen Kopie, wo immer möglich.
InformationsquelleAutor der Antwort BFree
Wenn man sich mit zwei bestehenden Objekten erhalten Sie möglicherweise einige Kilometer mit der CopyTo-Methode: http://msdn.microsoft.com/en-us/library/cc645053.aspx
Verwenden Sie die Add-Methode der anderen Sammlung (receiver) aufnehmen kann.
InformationsquelleAutor der Antwort Oli
Ich verstehe nicht, warum nicht mit dem Wörterbuch( Dictionary ) (vorgeschlagen von ageektrapped ).
Wollen Sie durchführen eine Flache Kopie oder eine Tiefe Kopie? (das heißt, die beiden Wörterbücher verweisen auf die gleichen Referenzen oder neue Kopien jedes Objekts innerhalb der neuen Wörterbuch?)
Wenn Sie möchten, erstellen Sie eine neue Wörterbuch zeigt auf neue Objekte, ich denke, dass der einzige Weg ist durch eine foreach.
InformationsquelleAutor der Antwort Martin Marconcini