Touches de dictionnaire sensibles à la casse

J’ai trouvé de nombreuses informations sur le Web pour créer des dictionnaires capables d’effectuer des recherches insensibles à la casse, telles que, si j’ajoutais une paire clé / valeur d’appels (“A”, “valeur”)

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

retournera vrai.

Ce que je veux savoir, c’est pourquoi j’obtiens une erreur «La clé a déjà été ajoutée».

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

si j’ai défini mon dictionnaire pour faire des recherches sensibles à la casse. N’y a-t-il aucun moyen de définir un dictionnaire pour pouvoir append différentes clés en casse?

Les dictionnaires sont sensibles à la casse par défaut – vous n’avez rien à faire.

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

Voir votre code de travail en ligne ici: ideone .

Si vous recevez une erreur avec votre code, c’est parce que l’une de ces clés existe déjà dans votre dictionnaire.

Tous les Dictionaries sont sensibles à la casse. Toutefois, vous pouvez utiliser les comparateurs de chaînes non sensibles à la casse fournis par la classe SsortingngComparer pour créer des dictionnaires avec des clés de chaînes ne SsortingngComparer pas la casse.

Vérifiez-le d’ idéone .

Le PO est réellement correct s’il utilisait la classe SsortingngDictionary. Le site de Microsoft indique que la clé est convertie en minuscule avant son stockage ( https://msdn.microsoft.com/en-us/library/system.collections.specialized.ssortingngdictionary(v=vs.110).aspx ). Pour rendre la clé sensible à la casse, l’utilisation du dictionnaire générique suggéré par Mark Byers fonctionne parfaitement. Si vous souhaitez une clé insensible à la casse, SsortingngDictionary fonctionne bien.