7
votes

Pourquoi ne puis-je pas définir un dictionnaire de cas insensible à C #?

Ce code C # / WPF: xxx

me donne l'erreur :

La meilleure correspondance de la méthode surchargée pour 'System.collections.Generic.Dictionary.dictionary (System.collections.Generic.Iddictionner)' a des arguments invalides

Pourtant, je trouve cet exemple de code partout tel que ici et ici .

Comment puis-je définir un dictionnaire dont les clés sont-elles-insensit?


0 commentaires

3 Réponses :


20
votes

Vous essayez d'utiliser stringcomparison , qui est un énumé. Vous devriez utiliser stringcomparer.invariantcultureignorecase < / a> à la place - c'est une propriété renvoyant un stringcomparer , qui implémente IéqualityComparer . Vous finirez ensuite par appeler le Dictionnaire <,> surcharge constructeur accepter un iéqualitycomparer qu'il peut utiliser pour vérifier l'égalité et générer des codes de hachage.


0 commentaires

3
votes

Pass StringComParrer.InvariantculatureCase. Remarque StringCompar ER Not StringComppar Ison .

plus généralement, le dictionnaire Constructeur peut prendre un argument de type Icomarer . Comme Jon Notes, StringComparison est une énumération. Mais StringComParer fournit une implémentation "en conserve" de Icomarer , et c'est ce dernier dont vous avez besoin.


0 commentaires

1
votes

Ceci fonctionne sur mon ordinateur: xxx


0 commentaires