2012-01-16 61 views
7

我使用的随机函数和接收无法投型“System.Random”的对象输入写一个小头或尾巴程序'System.IConvertible'的消息,我不知道为什么。有人可以摆脱一点点光。谢谢。无法投型“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; 

} 
+1

一个忠告的前景:只要你在C#中收到错误消息,请检查是否发生了就行了,请确保您有正确的参数类型/变量类型/等,检查内部异常。 – 2012-01-16 15:25:45

回答

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; 
+0

+1在代码上下文中实际_looked_的唯一答案。看起来确实不太可能,OP真的打算转换Random类型的对象;) – Abel 2012-01-16 15:25:31

+0

谢谢你的工作。 – NewUser101 2012-01-16 15:26:42

1

这是因为Convert.ToIn32()需要传递的对象实现IConvertible

为了获取一个随机数,你需要调用Random.Next()方法,像这样:

Random rNum = new Random(); 
int YourRandomNumber = rNum.Next(2, 47); 
-2

完全一样的错误消息状态,你不能System.Random的实例,在这种情况下,一个Int转换为。

0

您必须分配从rNum.Next(2,47)返回给一个变量,像这样的值:

int rrNum = rNum.Next(2,47); 

rNumRandom类型。您无法将该类型转换为int

rNum.Next(2,47)返回所需的int。如果你看一下Random.Next的文档,你会看到它的类型签名是:

public virtual int Next(int minValue, int maxValue); 

intpublic virtual int是方法的返回类型。您可以使用此信息来确定您需要存储什么类型的变量来存储从Next调用返回的内容。

相关问题