日期:2014-05-17  浏览次数:21117 次

C#关于哈希表的强行转换代码~~待解
在书上看到了一段伪代码,其中有一句不知道是什么意思,大家帮忙看看:
Hashtable htwt = new Hashtable();
foreach(string w in htdw.keys) //此处的htdw跟htdt都是哈希表,之前声明过了。
{
  foreach(string t in htdt.leys)
  {
  ((Hashtable)htwt[w])[t] = (int)((Hashtable)htwt[w])[t]+1;
  。。。
  }
}

  两个循环语句中的那句代码是什么意思啊, 以前没有见过哈希表还能强制转换。 还有个疑问就是上面刚刚定义的新哈希表htwt是空的,代码中引用的htwt[w]这个值应该是null吧,怎么说也不能转换啊。。
大家要是谁见过这方面的能给解释解释不~~~谢谢了

------解决方案--------------------
既然是伪代码就不能用语法来看。看个意思就可以了。
Hashtable是以前的写法,现在2005开始,就只是为了向前兼容而存在。
Hashtable的key和value都是object类型,以方便类型转换。2005(.net 2.0)开始,就有了模板,泛华类型,我们就可以不用这个,改用
Dictionary<Dictionary<int>, int> dict = new Dictionary<Dictionary<int>, int>();
这样就有明确类型,不用转换了。
我估计书上只是省略了对hashtable的赋值部分。不过不赋值显然也不会错,迭代器会立刻退出的。