首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于design by contract解决思路

2012-07-28 
关于design by contract最近想看看design by contract,但是ensure和require总是调不出来,希望有高手指点一

关于design by contract
最近想看看design by contract,但是ensure和require总是调不出来,希望有高手指点一下啊


using System;
using System.Diagnostics.Contracts;

public class RationalNumber
{
  private int numberator;
  private int denominator;

  public RationalNumber(int numberator, int denominator)
  {
  Contract.Requires(denominator != 0, "The second argument can not be zero.");
  //我理解如果分母不是0的话,应该报错啊
  this.numberator = numberator;
  this.denominator = denominator;
  }

  public int Denominator
  {
  get
  {
  Contract.Ensures(Contract.Result<int>() != 0);//同理,也应该报错
  return this.denominator;
  }
  }

  [ContractInvariantMethod]
  protected void ObjectInvariant()
  {
  Contract.Invariant(this.denominator != 0);
  }
}

public class SimpleCalculator
{
  private static RationalNumber z;
  public static void Main()
  {
  int x;
  z=new RationalNumber(0,0) ;
  Console.WriteLine(z.Denominator);
  x = 3;
  x++;
  Contract.Assert(x == 4);
  }
}

[解决办法]
你用Release编译运行?

用Debug编译将给你错误信息。Contract.Ensures需要下载安装Code Contract插件
http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

热点排行