StringDictionary
comes from .NET 1.1 and implements IEnumerable
Dictionary<string, string>
comes from .NET 2.0 and implements IDictionary<TKey, TValue>,IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable
IgnoreCase is only set for Key in StringDictionary
Dictionary<string, string>
is good for 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
Dictionary<string,string>
for all new code (unless you need to target 1.1). – Crock