也就是
hashtable["A"] 应该等于hashtable["a"]

解决方案 »

  1.   

    public class myhash:System.Collections.Hashtable
    {
    public override object this[object key]
    {
    get
    {
    return base[key.ToString().ToLower()];
    }
    set
    {
    base[key.ToString().ToLower()] = value;
    }
    }
    public override void Add(object key, object value)
    {
    base.Add (key.ToString().ToLower(), value);
    }
    }
      

  2.   

    插入值和取值时 都 统一大小写就行了
    "A".ToLower() = "a"
      

  3.   

    public class IgnoreCaseHashtable : Hashtable
    {
        public object this[string key]
        {
            get { return this[key.ToLower()]; }
            set { this[key.ToLower() = value; }
        }    void Add(string key, object value)
        {
            base.Add(key.ToLower(), value);
        }
        
        void Remove(string key)
        {
            base.Remove(key.ToLower());
        }
    }
      

  4.   

    自己找到答案了,这个分只能给自己了:
    public class BaseHashtable : Hashtable
    {
    public BaseHashtable() : base(CaseInsensitiveHashCodeProvider.Default,CaseInsensitiveComparer.Default)
    {

    }
    }
      

  5.   

    -.- 原来如此,不过也算学到一招。BTW: 既然 Hashtable 的构造函数有 IHashCodeProvider 和 IComparer 的重载,为什么不直接用
    Hashtable ht = new Hashtable(CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default);
    呢?