1
我正在將一個位圖封裝爲一個像素數組的對象。 該數組是一維的,我將圖像的寬度存儲在只讀字段中。我還添加了一個根據像素數組長度和寬度計算高度的屬性。我有以下關於高度的不變式:如何提示靜態檢查器以瞭解簡單的算術操作?
- 像素數組(Data屬性,使用私有數據字段)不爲空,並且至少有一個元素。
- 寬度大於零
height屬性的代碼:
public int Height
{
[Pure]
get
{
Contract.Requires(Data != null);
Contract.Requires(Width > 0);
Contract.Requires(Data.Length > 0);
Contract.Ensures(Contract.Result<int>() > 0);
Contract.EndContractBlock();
Contract.Assume(Data.Length > Width);
return Data.Length/Width;
}
}
但我不能讓靜態檢查證明的保證。問題可能是(根據我的理解),沒有要求Data.Length % Width == 0
,因爲整數除分Data.Length/Width
可能爲零;因此我增加了沒有運氣的假設。我不知道如何提示靜態檢查器接受我的確保。