Random ran = new Random();for (int b = 0; hashtable.Count < int.Parse(button0.Text); b++ )
                    {
                        Num = ran.Next(1, int.Parse(button0.Text));
                        MessageBox.Show(Num.ToString());
                        if (!hashtable.ContainsValue(Num))
                        {
                            MessageBox.Show(Num.ToString());
                            btn.Text = Num.ToString();
                            hashtable.Add(btn.Text, btn.Text);
                            break;
                            
                        }我把随机生成的数字动态地添加到按钮的TEXT上,可是...数字竟然重复了...
唉,这机子的WIN7启动不了调试模式..只能用打印来看了。
我能知道是我if语句的判断错了...但是我想不通是怎么错了。
等待高手解答!

解决方案 »

  1.   

    hashtable.Add(btn.Text, btn.Text);这个什么意思?键值一样?
    用List<T>吧
      

  2.   

    hashtable.Add(obj key,obj value);
    增加键值嘛
    然后用来判断键值对应吗?
      

  3.   

    从打印的情况来看...已经有了的数,也能通过if的判断
    不知道是我判断条件有问题,还是我的hashtable的没加上数据
      

  4.   

    Random rnd = new Random(DateTime.Now.Millisecond); 
    Hashtable.ContainsValue //判断HashTable中是否包含指定值
      

  5.   

    eg:            Random ran = new Random();
                Int32 Num;            List<String> list = new List<String>();            while(list.Count < 20)
                {
                    Num = ran.Next(1, 20000);
                    if (!list.Contains(Num.ToString()))
                    {
                        list.Add(Num.ToString());
                    }
                }            foreach (String s in list)
                    Console.WriteLine(s);
      

  6.   

    用list数组。里面有个distinct 的方法。可去除重复
      

  7.   

    可是如果键值一样,在这有什么意思?
    可以使用List<String> , 方法Contains 来判断是否有这个元素..
      

  8.   

    知道错在哪里了...
    因为我的代码写在事件里面....
    所以我每次执行完,不管是hashtable还是List都会被清空...
    难怪我一直都判断不上!
    谢谢诸位...
    我的Hashtable可以用了
    也谢谢Peter200694013为我提供了一种新思路,谢谢