%Vor%Ich denke, ich sollte es klonen zuerst? Wie mache ich das?
Nicht so einfach wie bei der Except
Erweiterungsmethode, aber wahrscheinlich schneller (Sie sollten ein paar Leistungstests durchführen, um sicher zu gehen)
Ein Hash-Satz muss seine Hash-Algorithmus-Konstanten und seine Überlauf-Bins verfolgen. Die Elemente in dem Satz werden durch Bezugnahme gehalten. Das Erstellen eines neuen Hash mit dem Copy-Konstruktor, wie Thomas Levesque vorschlägt, erzeugt eine flache Kopie dieses Overheads und sollte ziemlich schnell sein. Die Verwendung von Except () in der von James McNellis vorgeschlagenen Weise erstellt zuerst eine anonyme Kopie und übergibt diese dann an den Kopierkonstruktor, der die Felder im Anonymen verwendet, um seine eigenen Felder zu initialisieren. Wie Thomas sagte, könnten Sie ein paar Leistungstests durchführen, aber theoretisch sollte seine Antwort die Antwort von James schlagen. Und nebenbei, zu meiner Art zu denken, ist eine seichte Kopie kein Klon, da ich glaube, dass ein Klon impliziert, dass die zugrunde liegenden Elemente ebenfalls kopiert werden. Hash-Sets mit gemeinsamen Elementen verwenden eine Kopie, wenn die Strategie geändert wurde.