[英]'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.