首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码跳过Contract.Requires

代码跳过Contract.Requires
EN

Stack Overflow用户
提问于 2011-10-14 00:54:05
回答 1查看 154关注 0票数 1

我试着在调试时使用c# contracts...but编写这个方法,它完全忽略了Contract.requires和CheckRep(),我用错了吗??

代码语言:javascript
复制
    public Poly Add(Poly q)
    {
        CheckRep();
        Contract.Requires(q != null, "You need to provide a valid non-null Poly.");

        Poly la, sm;

        if (deg > q.deg)
        {
            la = this; sm = q;
        }
        else
        {
            la = q; sm = this;
        }

        int newdeg = la.deg;

        if (deg == q.deg)
        {
            for (int k = deg; k > 0; k--)
            {
                if (trms[k] + q.trms[k] != 0)
                {
                    break;
                }
                else
                {
                    newdeg--;
                }
            }
        }

        Poly r = new Poly(newdeg);

        int i;

        for (i = 0; i <= sm.deg && i <= newdeg; i++)
        {
            r.trms[i] = sm.trms[i] + la.trms[i];
        }
        for (int j = i; j <= newdeg; j++)
        {
            r.trms[j] = la.trms[j];
        }

        return r;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-14 00:57:03

它必须是:

代码语言:javascript
复制
  public Poly Add(Poly q)
    {
        Contract.Requires(q != null, "You need to provide a valid non-null Poly.");
        CheckRep();

来自MSDN

  1. 此方法调用必须在方法或属性的开头,在任何其他代码之前。
  2. 此协定向客户端公开;因此,它必须仅引用至少与封闭方法一样可见的成员。如果要在前提条件失败时引发异常,则
  3. 使用此方法而不是Contract.Requires(Boolean,String)方法。

您还必须激活运行时检查。右键单击您的项目->属性。单击左侧菜单中的"Code Contracts“。选中"Perfrom Runtime Contact Checking“

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

https://stackoverflow.com/questions/7757608

复制
相关文章

相似问题

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