Frage

Eines meiner größten Probleme mit einem Wechsel von Java zu .Net zu tun, ist die Tatsache, dass es keine Set-Schnittstelle in .NET ist. Ich weiß, es gibt Bibliotheken, die ich gehen könnte und herunterladen aber was ist der Grund für die nicht mit ihm in gebaut? Es gibt Karten (Dictionary) und Listen aber warum nicht ein Set?

Bearbeiten : soll ich klarstellen, dass nicht jeder nutzt .NET 3.5 noch - so bin ich mehr oder weniger auf ältere Versionen von .Net Bezug

War es hilfreich?

Lösung

Ich denke, es ist einfach eine Lücke durch die BCL Autoren. .NET 3.5 hat eine HashSet Klasse; für frühere Versionen, empfehle ich ein Dictionary , mit Nullen im Wertfeld Verpackung, O (1) hinzuzufügen, zu entfernen und Lookup-Zeit zu replizieren.

Andere Tipps

In .NET 4.0 HashSet nachgerüstet werden, um auch neue ISet-Schnittstelle zu implementieren.

.NET 3.5 hat HashSet die alle Set-Operationen der Fall ist.

Wollen Sie eine HashSet ?

Es gibt in diesen Tagen HashSet<T>, aber leider keine Schnittstelle, von denen ich weiß.

Wie andere bereits festgestellt haben, gibt es eine HashSet<T>, die eigentlich nur ein Satz ist.

Der Grund, es „hash“ davor (ein Implementierungsdetail des Satzes verwendet, da es Hashes Duplikate zu eliminieren) hat, ist becase Set ein Schlüsselwort in VB.NET ist.

Vielleicht ist die Argumentation, dass ein Satz wirklich nur eine Liste mit einem bestimmten Implementierung Detail, die die Elemente darin zu sein verschieden einschränkt. Da die Unterscheidbarkeit der Liste in der Umsetzung ist eher als die Schnittstelle ist eine Schnittstelle nicht benötigt wird.

Wie andere erwähnt haben, hat der FCL die HashSet<T> .

ich auch von Java .Net vor kurzem (aus beruflichen Beschäftigung) bewegt, und ich muss zugeben, dass meine ersten Probleme auf Sammlungen auch gewesen.
In der aktuellen .NET-Version (3.5 und sprechen über C #) Sie auf sich selbst orientieren sollte

  • ICollection
  • IList<T>
  • List<T>
  • IDictionary<TKey,TValue>
  • IEnumerable<T>

Dies sind die am häufigsten verwendeten (Hoffnung, die ich nicht eine versäumte)

Vielleicht, weil die Bildungsüberlegungen.

Ein typischer Programmierer sieht Sätze als magischen Behälter, egal nur funktioniert, wie viele Elemente in ihm.

Wenn es keine explizite Satz ist, ein Programmierer gezwungen ist, sich von anderen Arten zu wählen, und während so auf die Elemente reflektieren dabei zählen und geeignete Datenstruktur eine gute Leistung zu erreichen.

Nur eine wilde Vermutung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top