我需要一个简单的随机数作为我正在创建的循环,我不能为我的生活找出我在这里做错了什么。有人可以查看下面的代码并向我解释为什么它会给我以下错误:
错误1'System.Random.Next(int,最佳重载方法匹配) int)'有一些无效的参数
错误2参数1:无法转换 从'十进制'到'整数'
错误3参数2:无法转换 'decimal'到'int'
我试图从“数字上/下”控件中拉出范围的最小值和最大值。我会假设LINQ或C#会有一个简单的单行生成器,但我找不到它。
Random rnd1 = new Random();
var integer = rnd1.Next(numericUpDown_RandomMin.Value,
numericUpDown_RandomMax.Value);
textbox.Text = integer.ToString();
答案 0 :(得分:2)
好吧,首先numericUpDown_RandomMin.Value
和..._RandomMax.Value
不是int
,所以你可能需要投射:
var integer = rnd1.Next((int)numericUpDown_RandomMin.Value, (int)numericUpDown_RandomMax.Value);
除此之外,你得到了什么错误?
答案 1 :(得分:2)
NumericUpDown是小数,您需要转换为int。
var integer = rnd1.Next((int)numericUpDown_RandomMin.Value, (int)numericUpDown_RandomMax.Value);
答案 2 :(得分:2)
Random.Next
需要两个Int32
值,但NumericUpDown.Value
属性为decimal
。由于从decimal
转换为int
会失去一些值精度,因此您必须明确地执行此操作:
rnd1.Next((int)numericUpDown_RandomMin.Value, (int)numericUpDown_RandomMax.Value);
答案 3 :(得分:2)
NumericUpDown.Value返回小数,而Next()接受整数。您可能希望先将其转换为整数:
var integer = rnd1.Next((int)numericUpDown_RandomMin.Value, (int)numericUpDown_RandomMax.Value);
答案 4 :(得分:1)
由于NumericUpDown.Value
的返回类型为Decimal
,您需要明确将numericUpDown_RandomMin.Value
和numericUpDown_RandomMax.Value
值转换为Int32
因为Random.Next(Int32, Int32)
将两个参数作为Int32
。等;
Random rnd1 = new Random();
var integer = rnd1.Next((int)numericUpDown_RandomMin.Value, (int)numericUpDown_RandomMax.Value);
textbox.Text = integer.ToString();