如何从ListBox中获取随机项,然后在C#中进行比较?

时间:2012-08-02 04:28:42

标签: c# random listbox compare

目前,我有这个:

Random random = new 
random.Next(1, strings.Items.Count);
strings.Select();
strings.SelectedItem = strings.Items[Convert.ToInt32(random)];
var str = strings.SelectedItem;
if (str == "stuff")
{
  //Here
}

它不会在输出中给出任何错误,但在测试时它不会运行。我得到一个InvalidCastException,说它无法将System.Random类型的对象转换为类型System.IConvertible

此错误意味着什么,我该如何解决?

2 个答案:

答案 0 :(得分:3)

你的原始代码不应该编译(你错过了第一行的new Random();)。它应该是:

Random random = new Random();
int randomNumber  = random.Next(1, strings.Items.Count);
strings.Select();
strings.SelectedItem = strings.Items[randomNumber];
var str = strings.SelectedItem;
if (str == "stuff")
{
    //Here
}

您正在获取以下行的异常,该行尝试将random对象转换为您不能执行的int,这就是您获得异常的原因。

strings.Items[Convert.ToInt32(random)]

根据string.Items对象索引random是错误的。它应该是random对象返回的随机数,而不是对象本身。

答案 1 :(得分:1)

将代码更改为以下内容:

Random random = new 
int rnd = random.Next(1, strings.Items.Count);
strings.Select();
strings.SelectedItem = strings.Items[rnd];
var str = strings.SelectedItem;
if (str == "stuff")
{
  //Here
}