读书人

请教怎么实现一个忽略键值大小写的Has

发布时间: 2012-02-14 19:19:19 作者: rapoo

请问如何实现一个忽略键值大小写的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))
{
}

读书人网 >C#

热点推荐