C# · 12月 26, 2021

c# – 使用代码合同指定返回值可能为null

有没有明确规定使用代码合约返回值可以为空的方法?

我担心的是,没有Contract.Ensures(Contract.Result< object>()!= null)的方法在将来可能会被错误地“固定”以包括后置条件,即使原始意图可能是允许null结果.

解决方法 如果有任何其他后期条件,那么这些将指示null是有效的返回值.例如,如果方法应返回正值,但如果发生错误则使用null: Contract.Ensures(Contract.Result<int?>() == null || 0 <= Contract.Result<int?>());

如果您担心回归,最佳解决方案可能是为预期的null返回值添加单元测试.