2009-09-01 8 views
48

Gibt es in C# irgendeine Datenstruktur, die wie ein Dictionary ist, aber nur einen Schlüssel hat und keinen Wert hat. Ich möchte im Grunde eine Liste von ganzen Zahlen, die ich schnell nachschlagen kann und sehen, ob ein bestimmter Wert in der Liste ist. Zugegeben, für meine derzeitige Verwendung würde eine Liste kein Leistungsproblem verursachen, aber es scheint einfach nicht gut mit der Absicht dessen übereinzustimmen, was mein Code tut.C# -Datenstruktur wie Dictionary aber ohne Wert

Antwort

73

Ja, es heißt HashSet<T>, und in Version 3.5 des .NET-Framework verfügbar. Wenn Sie .NET Version 2.0 verwenden, können Sie ein Dictionary verwenden und Werte auf Null festlegen.

+1

Beachten Sie, dass Hashset in .NET Framework 3.5 eingeführt wurde. Wenn Sie eine frühere Version verwenden, schätze ich, dass Sie ein Dictionary verwenden und alle Werte auf null setzen. – codeape

+0

Ein anderer Ansatz in .NET 2.0 besteht darin, 'KeyedCollection' zu verwenden und die Schlüsselextraktionsmethode als Wertidentität zu definieren. –

+0

mehr Info über die Verwendung von hashset: http://bit.ly/1FYcf –

0

oder eine SortedList verwenden, in denen Werte eindeutig sein

4

Wenn 3.5 ist keine Option, Sie so etwas wie Wörterbuch < int tun könnte, int> und einfach den Wert ignorieren. Ich habe dies in 2.0 getan, und ich neige dazu, den Wert auf den gleichen wie den Schlüssel einzustellen.

2

Wenn Sie nicht auf .NET 3.5 abzielen, bietet Power Collections (Open Source) auch eine Set-Implementierung.