日期:2014-05-18  浏览次数:21006 次

C#接口中的契约编程,看得不是很懂,请懂的的的高手分别解释下,谢谢了
int IList<T>.IndexOf(T value) 
{
  Contract.Ensures(Contract.Result<int>() >= -1);
  Contract.Ensures(Contract.Result<int>() < ((ICollection<T>)this).Count); 
  return default(int); 
}
我只知道Contract.Ensures();是验证后置条件.
Contract.Result<int>() ;但这句看不懂,MSDN 上说:“表示一个方法或属性的返回值。 ”在这里具体返回什么?或者麻烦高手再举更详细简单点的例子解释下,谢谢了。

------解决方案--------------------
Contract.Result<int>()就是你本函数的返回值,就是return default(int),比如:
static double DoSomething(double divisor, double dividend)
{
//要求函数返回值必须大于0
Contract.Ensures(Contract.Result<double>() > 0);
return divisor / dividend;
}