nullable == null 和 nullable.hasvalue 之间有啥区别(如果有的话)[重复]

Posted

技术标签:

【中文标题】nullable == null 和 nullable.hasvalue 之间有啥区别(如果有的话)[重复]【英文标题】: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 更正确。 【参考方案1】:

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

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

【讨论】:

这些没有区别。上面的问题已经被少数用户在***上提出过。 ***.com/questions/17783929/c-sharp-hasvalue-vs-null

以上是关于nullable == null 和 nullable.hasvalue 之间有啥区别(如果有的话)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Code First的[Required]与Nullable Types的比较

nullable == null 和 nullable.hasvalue 之间有啥区别(如果有的话)[重复]

根据第一个数据帧从第二个数据帧获取数据

在scala中匹配两个数据框

nullable,nonnull, null_resettable以及_Null_unspecified的区别和使用

在三元运算中将 null/Nullable 分配给 DateTime