System.Collections空间下的Hashtable类与System.Collections.Specialized下的StringDictionary的一点小区别
哎。有一周没有写自己的博客。
最近在做一个调用web服务的小程序,没有使用c#自动生成的代理类,而是使用http-get、post、以及soap的方式去请求的,使用这http请求这种方式需要自己去拼参数。由于情书的参数最后都要为字符串的,所以我就使用了System.Collections.Specialized下的StringDictionary类,这个类只支持字符串(string)的对应键和值,采取的是每一个参数对应一个值的方式,其实这种方式字典和哈希表也能够完成。使用这种方式后在调试的时候总是出错,总是出现请求500错误,我刚开始还以为是自己再解析服务的时候出错,最后终于查出来了,原来是自己的拼参数的时候把大小写搞错了。
本来web服务的方法是带有一个参数:Dream ,我的界面布局是一个textbox文本框,我将文本框的tag属性设置为Dream,然后程序每次执行的都是:
StringDictionary parm=new StringDictionary();
parm.Add(this.txtParm.Tag.ToString(),this.txtParm.Text);
然后我在拼参数地方参一个断点,然后发现每次从这个类中读出的key都是首字母小写的dream,就是这个地方导致程序出错的。
后面我将这个类换成Hashtable就没有出现这样的错误了,插断点观看读出的也是大写,其中Hashtable是支持两个参数为object的键值关系。