26 Stimmen

Warum haben HashSet aber nicht Set in C #?

Alte Frage

Nach meinem Verständnis hat C# in gewissem Sinne HashSet y set Typen. Ich verstehe, was HashSet ist. Aber warum set ein eigenes Wort ist? Warum ist nicht jeder Satz HashSet<Object> ?

Neue Frage

Warum hat C# keine generische Set Typ, ähnlich wie Dictionary Typ? Meiner Meinung nach würde ich gerne eine Menge mit einer Standardleistung für das Suchen, Hinzufügen und Löschen von Daten haben. Es wäre mir ziemlich egal, ob es mit Hashes oder etwas anderem realisiert wird. Warum also nicht eine Set-Klasse erstellen, die tatsächlich als HashSet in dieser Version von C#, aber vielleicht etwas anders in einer zukünftigen Version?

Oder warum nicht zumindest die Schnittstelle ISet ?

Antwort

Vielen Dank an alle, die unten geantwortet haben: ICollection implementiert vieles von dem, was man von ISet . Aber aus meiner Sicht, ICollection implementiert IEnumerable während Mengen nicht aufzählbar sein müssen --- Beispiel: Menge der reellen Zahlen zwischen 1 und 2 (mehr noch, Mengen können dynamisch erzeugt werden). Ich stimme zu, dass dies ein kleiner Schimpfwort ist, da "normale Programmierer" selten unabzählbare Mengen benötigen.

Okay, ich glaube, ich habe es verstanden. HashSet sollte unbedingt genannt werden Set aber das Wort Set ist in gewissem Sinne reserviert. Genauer gesagt wollten die Schöpfer der .NET-Architektur einen einheitlichen Satz (sic!) von Klassen für verschiedene Sprachen haben. Das bedeutet, dass jeder Name der Standardklasse nicht mit einem Schlüsselwort in den .NET-Sprachen übereinstimmen darf. Das Wort Set wird jedoch in VB.NET verwendet, bei dem die Groß- und Kleinschreibung keine Rolle spielt (oder doch?), so dass hier leider kein Spielraum besteht.

Rätsel gelöst :)

Epilog

Die neue Antwort von Alex Y. verweist auf die MSDN-Seite die die kommende .NET 4.0-Schnittstelle beschreibt ISet das sich ziemlich genau so verhält, wie ich es mir vorgestellt habe, und das von HashedSet . Happy End.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X