通过参数传递的 Null 检查值类型

Null check value types passed via parameters

考虑到值类型总是默认初始化并且永远不会为 null,是否值得对通过参数传递给方法的值类型进行 null 检查?

例如是否值得执行以下检查

public void Method(Guid x)
{
  if (x == null)
   throw new ArgumentNullException();
...
}

虽然条件在技术上是 有效 (因为运算符重载规则和可空类型),但它只能计算为 false。这就是为什么在某些情况下,您会收到编译器警告,让您知道唯一可能的结果是 false.

因此,除非您的问题还有更多内容,否则归根结底就是询问这段代码是否值得:

public void Method(Guid x)
{
  if (false)
   throw new ArgumentNullException();
...
}

答案应该很明显了。