1

目前,我有这个:

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

这个错误是什么意思,我该如何解决?

4

2 回答 2

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
}

您在下一行遇到异常,它试图将randomobject 转换为 int,这是您无法做到的,这就是您遇到异常的原因。

strings.Items[Convert.ToInt32(random)]

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

于 2012-08-02T04:34:38.120 回答
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
}
于 2012-08-02T04:30:33.893 回答