代码片段:Hashtable hs = new Hashtable();
int[] a = {ID1, ID2};
double b = 0;
...
hs.add(a,b);   //这样多次向hs里面添加数据(一个数组, 一个浮点小数),都不为零;int[] b = {doc1, doc2}; // 定义一个数组, 其中doc1, doc2是已知的值。
if(hs.Contains(b))
{
  Console.WriteLine("have the value b!");
}                       
....请问大家最后那个if语句可以实现么?  还是说需要有什么改正的
我这样编过,但是每次都跳过,不管包含不包含b,都输出那句话,就好像if语句没有存在一样。
希望高手帮个忙~~~ 

解决方案 »

  1.   

    数组不适合作键,你可以修改一下,就通过了:private void button1_Click(object sender, EventArgs e)
    {
        Hashtable hs = new Hashtable();
        string a = "2";
        int[] b = { 1, 2 };
        hs.Add(a, b);    if (hs.Contains("2"))
        {
            MessageBox.Show("have the value b!");
        }
    }
    MSDN中的说明:
    键不能为 空引用(在 Visual Basic 中为 Nothing),但值可以。其状态和哈希代码值之间不相关的对象通常不应用作键。例如,String 对象比 StringBuilder 对象更适于用作键。
      

  2.   

    同意一楼,你已经把b放进hs中了,所以hs中肯定有b,也就是说,程序会始终走Console.WriteLine("have the value b!");
    这步!
      

  3.   

    http://topic.csdn.net/u/20100319/12/2064eb72-ede6-4d7a-860b-751c11f11ea3.htmlHashtable 只是比较值是否相等,即 相等性 。
    类型的相等是通过类型的 Equals 或 == 操作符 决定的。