jga*_*fin 4 .net random code-contracts
我已经安装了一个插件(Microsoft的Code Contract Editor Extensions),它显示了.NET的所有代码契约.
当我看合同Random.Next
,它说 ensures result <= maxValue
,而MSDN指出,包括maxValue是排斥的.合同不应该说ensures result < maxValue
吗?
它不是唯一的,MSDN 并没有声明它是.嗯,好吧,它在谈到时确实使用了"独家"这个词,这个词maxValue
不太清楚,但实际情况是,在绝大多数情况下,它确实是预期的排他性.
然而,有一些角落案例:具体的例子,Next(0)
回报0
; Next(4,4)
回报4
.它没有选项时是包容性的,这在MSDN的"返回值"部分中有记录:
引用来自Next(maxValue)
:
但是,如果maxValue等于零,则返回maxValue.
如果minValue等于maxValue,则返回minValue.
(当然也可以说" maxValue
已退回")
因此,在这两种情况下,都可以maxValue
返回.
唯一的例外是无参数Next()
,它被严格记录< int.MaxValue
.