目前,我有这个:
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
。
此错误意味着什么,我该如何解决?
答案 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
}