无法将“System.Random”类型的对象强制转换为“System.IConvertible”类型

时间:2012-01-16 15:21:23

标签: c# .net

我正在使用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;

}

4 个答案:

答案 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。