【发布时间】:2012-07-17 12:05:18
【问题描述】:
你们都这样做:
public void Proc(object parameter)
{
if (parameter == null)
throw new ArgumentNullException("parameter");
// Main code.
}
Jon Skeet 曾经提到他有时会使用扩展程序来执行此检查,因此您可以这样做:
parameter.ThrowIfNull("parameter");
所以我提出了这个扩展的两个实现,但我不知道哪个是最好的。
第一:
internal static void ThrowIfNull<T>(this T o, string paramName) where T : class
{
if (o == null)
throw new ArgumentNullException(paramName);
}
第二:
internal static void ThrowIfNull(this object o, string paramName)
{
if (o == null)
throw new ArgumentNullException(paramName);
}
你怎么看?
【问题讨论】:
-
创建一个扩展对象/一切的扩展方法几乎从来都不是一个好主意。 . stackoverflow.com/a/7652359/284240
-
这样递归安全吗?这不会无限递归吗?
-
Jon Skeet 在这里提到它:stackoverflow.com/questions/291340/…
-
@Rup 什么条件会停止递归?
-
当然很清楚:函数的第一行在涉及任何条件逻辑之前再次调用该函数..那不是无限的吗?
标签: c# null extension-methods isnull