[英]'maxValue' must be greater than zero
我不确定这是一个问题,但是消息中似乎有些不正确 。
我的第一次尝试:
try
{
var r = new Random();
Console.WriteLine(r.Next(-1));
}
catch (Exception e)
{
Console.WriteLine(e.GetType().ToString());
Console.WriteLine(e.Message);
}
输出:
System.ArgumentOutOfRangeException
“ maxValue”必须大于零。
参数名称:maxValue
我的第二次尝试:
try
{
var r = new Random();
Console.WriteLine(r.Next(0));
}
catch (Exception e)
{
Console.WriteLine(e.GetType().ToString());
Console.WriteLine(e.Message);
}
输出:
0
因此, 问题是:为什么0
大于零 ?
如果您看一下源代码 :
/*=====================================Next=====================================
**Returns: An int [0..maxValue)
**Arguments: maxValue -- One more than the greatest legal return value.
**Exceptions: None.
==============================================================================*/
public virtual int Next(int maxValue) {
if (maxValue<0) {
throw new ArgumentOutOfRangeException("maxValue", Environment.GetResourceString("ArgumentOutOfRange_MustBePositive", "maxValue"));
}
Contract.EndContractBlock();
return (int)(Sample()*maxValue);
}
该值必须为正,零为正。
根据MSDN Random.Next方法(Int32)的定义。
maxValue类型:System.Int32要生成的随机数的互斥上限。 maxValue必须大于或等于0。
所以可以,我们可以说该错误消息具有误导性。 它应该大于或等于零。
maxValue:要生成的随机数的排他上限。 maxValue必须大于或等于0。
该值不能为负。零或更高是可接受的,这就是为什么您超出答案的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.