日期:2014-05-18  浏览次数:20891 次

请问如何实现一个忽略键值大小写的Hashtable或IDictionary类
就是键abc与ABC被认为是同一个键


------解决方案--------------------
重写 Object.GetHashCode 方法(或 IHashCodeProvider 接口)和 Object.Equals 方法(或 IComparer 接口),
------解决方案--------------------
添加键的时候,把键转换为小写(或大写),如has1.add(s.ToLower(),obj),
取数据的时候,同样也把键转换为小写,如has1[s.ToLower()],这样就能达到忽略大小写的目的了。
------解决方案--------------------
忽略的方法可以是是,你在加入hashtable的时候和比较的时候,将字符串都转化为大写或者小写。
 eg: hashTable.Add(key.ToLower(), data);

hashTable[key.ToLower()]
------解决方案--------------------
学习 + 接分
------解决方案--------------------
abc和ABC的HashCode值是不一样的,用GetHashCode()方法可以得知

重写HashTable的Add方法和Clear方法,根据键的HashCode不同插入键
------解决方案--------------------
全转换成大写或全转换成小写。作键
------解决方案--------------------
自己写个取值的函数提供给他用就可以了呀。

添加的时候先把键转换为小写,同前,

然后把以下接口提供给客户使用。
public object GetValue(string Key)
{
return table[Key.ToLower()]
}
------解决方案--------------------
c#里面是这么写的:
public MyHash()
: base(System.StringComparer.Create(System.Globalization.CultureInfo.CurrentCulture, true))
{
}