首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Contract.Requires和DateTime

Contract.Requires和DateTime
EN

Stack Overflow用户
提问于 2011-05-22 14:15:54
回答 1查看 390关注 0票数 1

我有以下方法:

代码语言:javascript
复制
private static void SampleMethod(DateTime dateTime1, DateTime dateTime2)
{
    Contract.Requires(dateTime1 > dateTime2);
    Console.WriteLine("date 1 > date 2");
}

SampleMethod(DateTime.Today, DateTime.Today.AddDays(1));

当我在启用静态检查的情况下构建它时,我会得到警告CodeContracts: requires unproven: dateTime1 > dateTime2

请注意,动态检查对我来说很好,这只是我遇到问题的静态检查。

我该如何证明这个断言,或者抑制警告呢?

编辑:

我读到了关于ContractVerificationAttribute的文章,如果我将[ContractVefirication(false)添加到方法中没有什么区别(我怀疑这可能是一个bug),但是将它添加到类中将正确地关闭整个类的静态检查。不过,我仍在寻找一种关闭静态检查的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-22 15:21:56

静态验证器有其局限性,有时您必须提供帮助。它对数值数学的理解有限,但DateTime似乎超出了它的范围。

这就是Contract.Assume(bool)存在的原因:

代码语言:javascript
复制
    DateTime d1 = DateTime.Today;  
    DateTime d2 = d1.AddDays(-7);

    Contract.Assume(d1 > d2);

    SampleMethod(d1, d2);

CodeContracts:检查了4个断言:4个正确

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6088469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档