2010-03-22 11 views
8

Questo codice C#/WPF:Perché non è possibile definire un dizionario insensibile alle maiuscole/minuscole in C#?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

namespace TestDict28342343 
{ 
    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 

      Dictionary<string, string> variableNamesAndValues = 
       new Dictionary<string, string>(StringComparison.InvariantCultureIgnoreCase); 

     } 
    } 
} 

mi dà l'errore:

Il metodo migliore partita overload per 'System.Collections.Generic.Dictionary.Dictionary (System.Collections. Generic.IDictionary)' ha alcuni argomenti non validi

Eppure trovo questo esempio di codice ovunque come here e here.

Come definire un dizionario le cui chiavi sono case-insensitve?

risposta

3

Pass StringComparer.InvariantCultureIgnoreCase. Nota StringCompar er non StringCompar ison.

Più in generale, il costruttore Dictionary<TKey, TValue> può prendere un argomento di tipo IComparer<TKey>. Come nota Jon, StringComparison è un enum. Ma StringComparer fornisce un'implementazione "in scatola" di IComparer<string> ed è quest'ultima che è necessario.

8

Change

StringComparison.InvariantCultureIgnoreCase 

a

StringComparer.InvariantCultureIgnoreCase 
1

Questo funziona sul mio computer:

Dictionary<string, string> dic = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase). 
Problemi correlati