通常,当我想检查是否,让我们说构造函数参数已初始化时,我这样做:
public MyCtor(MyObj obj) {
if(obj == null)
throw new ArgumentNullException("obj");
}
但是最近我在 System.Diagnostics 名称空间中找到了这个不错的功能:
Contract.Requires<ArgumentNullException>(condition);
这有同样的效果吗?使用 Contracts 验证参数时是否有任何缺点?
答案 0 :(得分:2)
是的,除非:
您必须启用运行时检查才能使用Requires方法。
(来自MSDN)。如何打开它的说明必须在某个地方here。
另一种选择是CuttingEdge.Conditions
:
Condition.Requires(obj).IsNotNull();
Condition.Requires(myIntValue).IsGreaterThan(0);
Condition.Requries(myString).IsNotNullOrWhitespace();
更多关于codeplex。
这做同样的工作,但语法更简单,更human
可读(在我看来) - 所以没有缺点(但记住:它基于意见)。自从我发现以来一直使用它:)