-1
我正在寫一個專門的隨機化類,並希望使用CodeContracts來確保它的質量。典型的隨機函數發生器方法會接收一個上限「max」,並返回低於該限制的正隨機值。CodeContracts模數(%)操作失敗?
public int Next(int max)
{
Contract.Requires<ArgumentOutOfRangeException>(0 <= max && max <= int.MaxValue);
Contract.Ensures(0 <= Contract.Result<int>());
Contract.Ensures(Contract.Result<int>() < maxValue);
return (int)(pick() % maxValue);
}
其中pick()
返回一個隨機UInt32
。我的問題:爲什麼CodeContracts在最後的「確保」上失敗?
可能是因爲'maxValue!= max'。 – 2012-01-05 17:28:52
如果'max == 0',你的代碼會拋出一個異常。你的'max'參數也被錯誤地命名,因爲它不代表最大值,而是最大值加1。 – CodesInChaos 2012-01-05 20:05:18
你的代碼甚至無法編譯。你在那裏有一個'max'和一個'maxValue'。 – CodesInChaos 2012-01-05 20:08:07