我正在使用Random函数编写一个小的Heads或Tails程序,并收到一个Unable来强制转换'System.Random'类型的对象来输入'System.IConvertible'消息,我不知道为什么。有人可以轻松一点。感谢。
protected void Button1_Click(object sender, EventArgs e)
{
Random rNum = new Random();
rNum.Next(2, 47);
int rrNum = Convert.ToInt32(rNum);
string result;
result = (rrNum % 2 == 0) ? "Heads" : "Tails";
lblResult.Text = result;
}
答案 0 :(得分:7)
Next
随机返回整数。所以正确的代码是:
Random rNum = new Random();
int rrNum = rNum.Next(2, 47);
因此,无需将rNum
转换为整数。
Random rNum = new Random();
int rrNum = rNum.Next(2, 47);
string result = (rrNum % 2 == 0) ? "Heads" : "Tails";
lblResult.Text = result;
答案 1 :(得分:1)
那是因为Convert.ToIn32()
要求传递的对象实现IConvertible
。
要检索随机数,您需要调用Random.Next()
方法,如下所示:
Random rNum = new Random();
int YourRandomNumber = rNum.Next(2, 47);
答案 2 :(得分:0)
您必须将从rNum.Next(2,47)
返回的值分配给变量,如下所示:
int rrNum = rNum.Next(2,47);
rNum
的类型为Random
。您无法将该类型转换为int
。
rNum.Next(2,47)
会返回您想要的int
。如果查看Random.Next的文档,您会看到其类型签名是:
public virtual int Next(int minValue, int maxValue);
int
中的public virtual int
是方法的返回类型。您可以使用此信息来确定存储从Next
调用返回的内容所需的变量类型。
答案 3 :(得分:-2)
正如错误消息所述,您无法将System.Random的实例转换为Int。