Warum muss HashSet aber nicht in C # gesetzt sein?
Mein Verständnis ist, dass C # in gewissem Sinne hatHashSet
undset
Typen. Ich verstehe wasHashSet
ist. Aber warumset
ist ein separates Wort? Warum ist nicht jeder SatzHashSet<Object>
?
Warum hat C # keine generischeSet
Typ, ähnlich wieDictionary
Art? Aus meiner Sicht hätte ich gerne ein Set mit Standard-Such- / Hinzufügungs- / Löschleistung. Es ist mir egal, ob es mit Hashes oder etwas anderem realisiert wird. Warum also nicht eine Set-Klasse erstellen, die tatsächlich als implementiert würde?HashSet
in dieser version von c # aber vielleicht etwas anders in einer zukünftigen version?
Oder warum nicht zumindest die SchnittstelleISet
?
Gelernt, danke an alle, die unten geantwortet haben:ICollection
implementiert eine Menge von dem, was Sie erwarten würdenISet
. Aus meiner Sicht jedochICollection
implementiertIEnumerable
während Mengen nicht aufzählbar sein müssen --- Beispiel: Menge von reellen Zahlen zwischen 1 und 2 (und noch mehr, Mengen können dynamisch generiert werden). Ich bin damit einverstanden, dass dies nur eine kleine Beleidigung ist, da "normale Programmierer" selten unzählige Sets benötigen.
Ok, ich glaube ich verstehe.HashSet
war unbedingt zu nennenSet
aber das WortSet
ist in gewissem Sinne reserviert. Insbesondere wollten die Entwickler von .NET-Architekturen eine konsistente Menge von Klassen für verschiedene Sprachen haben (sic!). Dies bedeutet, dass jeder Name der Standardklasse nicht mit einem Schlüsselwort in den .NET-Sprachen übereinstimmen darf. Das WortSet
In VB.NET wird jedoch die Groß- und Kleinschreibung nicht berücksichtigt (oder?), sodass dort leider kein Handlungsspielraum vorhanden ist.
Geheimnis gelüftet :)
EpilogDie neue Antwort von Alex Y. verlinkt auf dieMSDN-Seite Hier wird die bevorstehende .NET 4.0-Schnittstelle beschriebenISet
was sich so ziemlich so verhält, wie ich es mir vorgestellt habe und von umgesetzt wirdHashedSet
. Glückliches Ende.