【问题标题】:whats the difference (if any) between nullable == null and nullable.hasvalue [duplicate]nullable == null 和 nullable.hasvalue 之间有什么区别(如果有的话)[重复]
【发布时间】:2016-06-01 14:50:11
【问题描述】:

说我有

int? x = SomeFunc();

我养成了说的习惯

if(x != null && x.HasValue)
{
   // do somethign with x.Value;
}

但是一个代码分析工具让我觉得这两个条件是一样的。我看了看,其实他们是

如果

int? x = null;
x==Null; // true
x.HasValue // false

那么为什么要对同一事物进行两种测试呢?有没有我遗漏的细微差别?

【问题讨论】:

  • 我想你的意思是x.HasValue // false
  • x==Null 在 OO 概念中是错误的,但它可以工作,因为 Nullable 结构有一个例外。否则 C# 中的结构永远不能为空。因此作为总结,两者都可以正常工作,但根据面向对象的定义,检查 HasValue 更正确。

标签: c# nullable


【解决方案1】:

这两者没有区别。 这只是约定俗成的问题。

只需选择一个(你喜欢的)并坚持下去。

【讨论】:

猜你喜欢
  • 2010-10-15
  • 1970-01-01
  • 2013-02-20
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多