zac*_*ary 6 c# code-contracts c#-4.0
在我的代码中我做了很多:
myfunction (parameter p)
{
  if(p == null)
   return;
}
我如何用代码合同替换它?
我有兴趣找出是否已传入null并通过静态检查捕获它.
如果在测试期间传入null,我有兴趣抛出合同异常
对于生产我想退出该功能.
代码合同可以做到这一点吗?这对代码合同有用吗?
语法如下:
Contract.Requires(p != null);
这需要在方法的顶部。所有Contract.Requires(和其他合同声明)必须在方法中的所有其他声明之前。
编辑:我第一次误读了你的帖子,以为你抛出了 ArgumentNullException 或者其他什么东西,直到我看到 Jon Skeet 的评论。我绝对建议至少使用链接问题中提供的多种方法中的一种。
在此复制 John Feminella 的答案之一:
[Pure]
public static double GetDistance(Point p1, Point p2)
{
    CodeContract.RequiresAlways(p1 != null);
    CodeContract.RequiresAlways(p2 != null); 
    // ...
}