Istanziare un Dictionary con chiavi Case-Insensitive in ASP.NET C#

Classe ASP.NET C# per il controllo e il calcolo formale del Codice Fiscale

Tra le varie classi messe a disposizione da ASP.NET, il Dictionary resta una  di quelle più utilizzate: la sua enorme versatilità compensa ampiamente la relativa inefficienza che si presenta in alcune situazioni, dove l'utilizzo di un Hashtable o di una classe più snella consentirebbe di ottenere prestazioni migliori.

Nella maggior parte dei casi, quando utilizziamo un Dictionary impostando una stringa come chiave (key), la modalità predefinita di confronto tra stringhe prevista dalla classe, che risponde a un criterio case-sensitive - considerando quindi rilevante la differenza tra lettere maiuscole e minuscole all'interno della chiave - può fare al caso nostro:

E così via. Il Dictionary di cui sopra avrà quindi tre diverse entries, ciascuna accessibile mediante la propria chiave case-sensitive specifica.

Vi sono casi, però, in cui questo comportamento predefinito non ci è di grande aiuto: fortunatamente, il costruttore della classe prevede un overload specifico che possiamo utilizzare in tutti i casi in cui vogliamo che il confronto tra le chiavi-stringa risponda a un criterio diverso. Qualora volessimo un confronto case-insensitive, ad esempio, potremmo istanziare la classe nel seguente modo:

Il Dictionary di cui sopra, a differenza del precedente, avrebbe in questo caso una singola entry, recuperabile utilizzando la chiave case-insensitive indicata.

E' opportuno considerare che, come ben spiegato in questa risposta su StackOverflow thread, la scelta di utilizzare StringComparer.OrdinalIgnoreCase fornirà alla nostra applicazione performance migliori rispetto allo StringComparer.InvariantCultureIgnoreCase, a patto che ci interessi togleire la discriminazione maiuscole/minuscole soltanto alle lettere.

Per il momento è tutto: felice sviluppo!

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Il periodo di verifica reCAPTCHA è scaduto. Ricaricare la pagina.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.