Hashtableh和Datatable的大小写敏感问题

C#中,HashtablDatatable是程序员经常用到的两个类,Hashtable主要用来进行字典操作,Datatable经常用来存储从数据库表中(广义来说可以是各种数据源)得到的数据,它是程序和数据库之间的一个桥梁,从库里提取到的数据放到Datatable中,程序对Datatable中的这些数据进行操作,然后再将修改后的数据存到数据库中。

值得注意的一点是Datatable是大小写不敏感的,而Hashtable是大小写敏感的。Datatable的“不敏感”特性非常有好处,使得在编程过程中,数据维护的工作量大大减少;而Hashtable的“敏感”特性并不总是有利的,比如有这样格式的一个XML模板文件:

<segment>

<Xmltag><string name="xxx"></string></Xmltag>

<Xmltag><string name="yyy"></string></Xmltag>

<Xmltag><string name="zzz"></string></Xmltag>

</segment>

需要以上面的文件为模板,构造出如下的一个XML文件发送出去:

<body>

<xxx>....</xxx>

<yyy>.....</yyy>

<zzz>.....</zzz>

</body>

完成上面的功能,首先需要根据模板文件中name的值,分别在Hashtable中存储对应的value值,如table.add"xxx","test")、table.add"yyy","hello");然后根据模板文件构造发送文件,发送文件配置节中的内容需要从Hashtable中获取,如table["xxx"]table["yyy"]

在一个大型项目中,如果设计时没有考虑周全或沟通不及时,不同的人可能写出不同风格的模板文件,xxx可能是全小写,也可能是全大写,或者是大小写混合,而负责写“hashtable.add()”的程序员和编写XML文件的人恰好又不一样,他选择了全部小写的风格,那么因为Hashtable的“敏感”特性,就会出现令人头疼的情况,要么修改程序,要么修改XML文件,修改程序是上策,有两种选择,一种方法是一个一个的修改,将add()中的所有xxxyyy........修改为和xml文件中相同的风格,这会令人生厌,另一种方法是,重写Hashtable中的方法,使其大小写不敏感,代码如下:

class HashTableTest:Hashtable

    {

        public override object this[object key] 

        {

            get 

            {

                if(key==null)

                {

                    return base[key];

                }

                else

                {

                    

                }

                return base[key.ToString().ToLower()];

            }

        }

        public override void Add(object key, object value)

        {

            base.Add(key.ToString().ToLower(),value);

        }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值