Effiziente Methode zum Klonen eines HashSet <T>?

or ein paar Tagen antwortete ich eine interessante Frage auf SO überHashSet<T>. Eine mögliche Lösung bestand darin, das Hashset zu klonen. In meiner Antwort schlug ich Folgendes vor:

HashSet<int> original = ...
HashSet<int> clone = new HashSet<int>(original);

Obwohl dieser Ansatz recht einfach ist, vermute ich, dass er sehr ineffizient ist: der Konstruktor des neuenHashSet<T> muss jedes Element aus dem ursprünglichen Hashset separat hinzufügen, undcheck wenn es noch nicht vorhanden ist. Dies ist eindeutig Zeitverschwendung: Da die Quellensammlung ein @ iISet<T>, es wird garantiert, dass es keine Duplikate enthält. Es sollte einen Weg geben, dieses Wissen zu nutzen ...

Im Idealfall,HashSet<T> sollte @ implementierICloneable, aber leider ist das nicht der Fall. Ich habe auch mit Reflector nachgefragt, ob dasHashSet<T> constructor hat eine bestimmte Aktion ausgeführt, wenn es sich bei der Quellensammlung um ein Hashset handelt, dies ist jedoch nicht der Fall. Es könnte wahrscheinlich durch Reflektion auf privaten Feldern geschehen, aber das wäre ein hässlicher Hack ...

So, hat jemand eine clevere Lösung gefunden, um ein Hashset effizienter zu klonen?

(Beachten Sie, dass diese Frage rein theoretisch ist, ich muss das nicht in einem echten Programm tun)

Antworten auf die Frage(12)

Ihre Antwort auf die Frage