2012-12-21 11 views
6

Ich habe viele Informationen im Internet über Wörterbücher in der Lage, Groß-und Kleinschreibung zu finden, so dass, wenn ich ein Schlüssel/Wert-Paar ("A", "Wert")Case Sensitive Dictionary Keys

aufrufen
MyDict["a"] == MyDict["A"] 

wird True zurückgeben.

Was ich wissen möchte, ist, warum ich einen bekommen „Schlüssel wurde bereits hinzugefügt“ Fehler, wenn ich

MyDict.Add("A", "value1"); 
MyDict.Add("a", "value2"); 

tun, wenn ich mein Wörterbuch definiert Groß- und Kleinschreibung-Lookups zu tun. Gibt es keine Möglichkeit, ein Dictionary zu definieren, um verschiedene verkleinerte Schlüssel hinzufügen zu können?

+3

Funktioniert gut für mich. Sind Sie sicher, dass Sie mit einem leeren Wörterbuch arbeiten? – Mir

+0

Könnten Sie ein vollständiges (ausführbares) Codebeispiel bereitstellen, das Ihr vorhandenes Problem demonstriert? –

Antwort

9

Wörterbücher sind standardmäßig case-sensitive - Sie müssen nichts tun.

Dictionary<string, string> myDict = new Dictionary<string, string>(); 
myDict.Add("A", "value1"); 
myDict.Add("a", "value2"); 

Sehen Sie Ihren Code online arbeiten hier: ideone.

Wenn Sie einen Fehler mit Ihrem Code bekommen, liegt das daran, dass einer dieser Schlüssel bereits in Ihrem Wörterbuch existiert.

+0

Es existierte bereits (bedeutet, dass ich Kaffee brauche), leider muss ich manuell ein großes Wörterbuch mit einer Menge von Werten erstellen und habe nicht die Möglichkeit berücksichtigt, dass Duplikate reinkommen. Danke, ich habe auch noch nie zuvor gesehen Also danke auch dafür. – spots

6

Alle Dictionaries sind case-sensitive. Sie können jedoch die von der Klasse StringComparer bereitgestellten Zeichenfolgenvergleiche verwenden, bei denen die Groß-/Kleinschreibung nicht beachtet wird, um Wörterbücher mit Groß-/Kleinschreibung ohne Beachtung der Groß- und Kleinschreibung zu erstellen.

Überprüfen Sie es von ideone.

1

Das OP ist tatsächlich korrekt, wenn er die StringDictionary-Klasse verwendet. Microsofts Website gibt an, dass der Schlüssel in Kleinbuchstaben konvertiert wird, bevor er gespeichert wird (https://msdn.microsoft.com/en-us/library/system.collections.specialized.stringdictionary(v=vs.110).aspx). Um die Groß- und Kleinschreibung der Groß-/Kleinschreibung zu berücksichtigen, funktioniert die Verwendung des generischen Wörterbuchs als Mark Byers sehr gut. Wenn Sie einen Schlüssel ohne Berücksichtigung der Groß- und Kleinschreibung benötigen, funktioniert StringDictionary gut.