StringDictionary
viene da .NET 1.1 e implementa IEnumerable
Dictionary<string, string>
viene da .NET 2.0 e implementa IDictionary<TKey, TValue>,IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable
IgnoreCase è impostato solo per Digitare StringDictionary
Dictionary<string, string>
è buono per LINQ
Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary.Add("ITEM-1", "VALUE-1");
var item1 = dictionary["item-1"]; // throws KeyNotFoundException
var itemEmpty = dictionary["item-9"]; // throws KeyNotFoundException
StringDictionary stringDictionary = new StringDictionary();
stringDictionary.Add("ITEM-1", "VALUE-1");
var item1String = stringDictionary["item-1"]; //return "VALUE-1"
var itemEmptystring = stringDictionary["item-9"]; //return null
bool isKey = stringDictionary.ContainsValue("VALUE-1"); //return true
bool isValue = stringDictionary.ContainsValue("value-1"); //return false
Ci sono differenze di prestazioni tra i due? – thecoop
Dovresti fare un benchmark per vedere quale si comporta meglio per la tua situazione speciale. Non mi aspetto una notevole differenza di prestazioni. Raccomando di usare 'Dictionary' per tutto il nuovo codice (a meno che non sia necessario il target 1.1). –
@thecoop nessun dato difficile da presentare al mio fianco ora, ma una volta quando ho fatto test per la velocità 'StringDictionary' ha ottenuto risultati peggiori (anche se tutto ciò non ha importanza). Per essere onesto infatti, in precedenza avevo la nozione che "StringDictionary" fosse una sorta di raccolta specializzata pensata per accelerare le cose quando "string" era la chiave, e con mia grande sorpresa quando si è comportata peggio nei miei test, ho cercato solo su Google per imparare che non è generico, – nawfal