非泛型類:Hashtable
從.NET Framework 1.0就有的方法
1. 直接構建Hashtable類
利用的建構函式:
public Hashtable(IHashCodeProvider hcp, IComparer comparer);
構建方法:
Hashtable hashtable = new Hashtable(CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default);
總結:
可以指定CultureInfo
在.NET Framework 2.0後已廢棄,用StringComparer類
2. 使用CollectionsUtil類(在System.Collections.Specialized命名空間內)
方法
Hashtable hashtable = CollectionsUtil.CreateCaseInsensitiveHashtable();
總結
不可以指定CultureInfo
只支援Hashtable和SortedList
用於非泛型類,在.NET Framework 2.0後使用沒有多大意義
在.NET Framework 2.0後有的方法
3. 使用StringComparer類
利用建構函式
public Hashtable(IEqualityComparer equalityComparer);
使用2.0後的StringComparer類(StringComparer類繼承了很多組建介面,包括非泛型)
public abstract class StringComparer :
IComparer,
IEqualityComparer,
IComparer<string>,
IEqualityComparer<string>
方法:
Hashtable hashtable = new Hashtable(StringComparer.CurrentCultureIgnoreCase);
總結:
可以指定CultureInfo,推薦
泛型類:Dictionary
直接使用StringComparer類
利用建構函式
public Dictionary(IEqualityComparer<TKey> comparer);
使用2.0後的StringComparer類(StringComparer類繼承了很多組建介面,包括非泛型)
public abstract class StringComparer :
IComparer,
IEqualityComparer,
IComparer<string>,
IEqualityComparer<string>
方法:
Dictionary<string, object> dic = new Dictionary<string, object>(StringComparer.CurrentCultureIgnoreCase);
總結:
可以指定CultureInfo,推薦
SortedList類
非泛型:
使用CaseInsensitiveComparer,因為他繼承IComparer
泛型:
使用StringComparer類,他繼承IComparer<string>
SortedList slist = new SortedList(CaseInsensitiveComparer.Default);
SortedList<string, object> slistGeneric =
new SortedList<string, object>(StringComparer.CurrentCultureIgnoreCase);