-1
전문화 된 랜덤 화기 클래스를 작성 중이며 CodeContracts를 사용하여 품질을 보장하고자합니다. 전형적인 랜덤 화 방법은 상한 'max'를 수신하고 그 한계 이하의 양의 무작위 값을 반환합니다. pick()
가 임의의 UInt32
반환모듈러스 (%) 연산자에 대한 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);
}
. 내 질문 : CodeContracts가 마지막 "보장"에 실패하는 이유는 무엇입니까?
아마도 'maxValue! = max'이기 때문일 수 있습니다. –
'max == 0'이면 코드가 예외를 throw합니다. max 매개 변수는 최대 값을 나타내지 않고 최대 값 + 1을 나타 내기 때문에 잘못 명명되었습니다. – CodesInChaos
코드를 컴파일 할 수도 없습니다. 거기에'max'와'maxValue'가 있습니다. – CodesInChaos