关闭我的头顶,我能想到的4种方式检查null参数:测试前提条件的不同方法的优缺点?
Debug.Assert(context != null);
Contract.Assert(context != null);
Contract.Requires(context != null);
if (context == null) throw new ArgumentNullException("context");
我一直使用的最后一个方法,但我刚才看到的代码片段使用Contract.Requires
,我不熟悉。 每种方法的优缺点是什么?有其他方法吗?
在VS2010 W/ReSharper的,
Contract.Assert
警告我说,表达始终是真实的(它是如何知道的,我不太清楚......不能HttpContext的为空? ),Contract.Requires
被淡化了,它告诉我的编译器不会调用的方法(我假设,因为前者的原因,它永远不会为空),并- 如果我改变的最后选择
context != null
所有代码如下翅膀渐渐消失,它告诉我代码是启发式无法达到的。
因此,看起来最后3种方法有一些内置到VS静态检查器中的智能,而Debug.Assert
是愚蠢的。
问题不明确。你是否真的试图一次全部使用它们? – 2010-12-15 01:22:59
@Matthew:不知道这怎么不清楚......不,我没有试图一次性使用它们。我做了一个类似的代码片段来说明你可以检查null的不同方式。 – mpen 2010-12-15 02:59:22
这就是我从问题的其余部分想到的,但是你使用的语法呈现很奇怪。 – 2010-12-15 03:06:00