Although this class does a culture-insensitive, case-insensitive comparison, it does so by calling String.ToLower(CultureInfo.InvariantCulture) on the key and storing the result. This is in contrast to the way that Windows stores case-insensitive identifiers, such as file paths, registry keys and values and environments variables, which uses String.ToUpper(CultureInfo.InvariantCulture).
Instead of this class, consider using the Dictionary<TKey, TValue> class, passing StringComparer.OrdinalIgnoreCase to its constructor.
For more information on the correct way to compare strings, see the following article:
New Recommendations for Using Strings in Microsoft .NET 2.0
http://msdn2.microsoft.com/en-us/library/ms973919.aspx