为什么这个C#代码合同格式错误?

Vic*_*ues 4 c# code-contracts microsoft-contracts c#-4.0

我在下面编写此合同时显示错误.

错误20方法'.... get_Page'中的格式错误的合同部分

'if'块有问题吗?

public int? Page
{
get
{
    int? result = Contract.Result<int?>();

    if (result != null)
        Contract.Ensures(result >= 0);

    return default(int?);
}
}
Run Code Online (Sandbox Code Playgroud)

编辑:

Lasse V. Karisen发表评论时发表了评论:

怎么样:Contract.Ensures(result == null || result> = 0); ?

是卡里森,我之前尝试过这个并编译.但问题仍然存在:在使用合同时是不是可能有ifs?

我遇到的另一个问题是无能为力(主要考虑上面的例子),还涉及结果的使用:

public int IndexOf(T item)
{
    Contract.Assert(item != null);
    Contract.Assert((item as IEntity).ID > 0);

    int result = Contract.Result<int>();
    Contract.Ensures(result >= -1);

    return default(int);
}
Run Code Online (Sandbox Code Playgroud)

bkq*_*kqc 10

合同格式错误,因为所有合同条款必须出现在任何其他代码之前.