2010-03-22 16 views
8

C#/WPF código:¿Por qué no puedo definir un diccionario insensible a mayúsculas y minúsculas en C#? Este

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); 

     } 
    } 
} 

me da el error:

El partido mejor método sobrecargado para 'System.Collections.Generic.Dictionary.Dictionary (System.Collections. Generic.IDictionary)' tiene algunos argumentos no válidos

Sin embargo, considero que este ejemplo de código en todas partes como here y here.

¿Cómo puedo definir un diccionario cuyas claves no distinguen entre mayúsculas y minúsculas?

Respuesta

3

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

De manera más general, el constructor Dictionary<TKey, TValue> puede tomar un argumento del tipo IComparer<TKey>. Como señala Jon, StringComparison es una enumeración. Pero StringComparer proporciona una implementación "enlatada" de IComparer<string>, y es lo último que necesita.

8

Cambio

StringComparison.InvariantCultureIgnoreCase 

a

StringComparer.InvariantCultureIgnoreCase 
1

Esto funciona en mi equipo:

Dictionary<string, string> dic = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase). 
Cuestiones relacionadas