我担心的是,没有Contract.Ensures(Contract.Result< object>()!= null)的方法在将来可能会被错误地“固定”以包括后置条件,即使原始意图可能是允许null结果.
Contract.Ensures(Contract.Result<int?>() == null || 0 <= Contract.Result<int?>());
如果您担心回归,最佳解决方案可能是为预期的null返回值添加单元测试.