【发布时间】:2016-12-04 08:55:40
【问题描述】:
考虑到值类型在默认情况下总是初始化并且永远不会为空,是否值得对通过参数传递给方法的值类型进行空检查?
例如是否值得进行以下检查
public void Method(Guid x)
{
if (x == null)
throw new ArgumentNullException();
...
}
【问题讨论】:
-
您无法将值类型与 null 进行比较。你会得到一个编译器错误。您可以做的是将其与
default(Guid)进行比较。这是一个类似的检查,但default(type)通常也是一个有效值(例如default(int)是 0),所以你需要小心。 -
对永远不会为空的东西进行空检查有什么意义?这背后还有其他问题吗?
-
@itsme86:有趣的是,无论如何,对于
Guids,您不会收到编译器错误。 -
@sstan 查看这个问题以获得解释:stackoverflow.com/questions/2177850/…
-
@itsme86,这将编译得很好。希望编译器足够聪明,可以在发布模式下折腾代码,但是检查 guid 是否等于 null 并没有错。 (它总是错误的)
标签: c# .net value-type