DateTime.hasvalue vs datetime == null,哪个更好以及为啥[重复]
Posted
技术标签:
【中文标题】DateTime.hasvalue vs datetime == null,哪个更好以及为啥[重复]【英文标题】:DateTime.hasvalue vs datetime == null, which one is better and why [duplicate]DateTime.hasvalue vs datetime == null,哪个更好以及为什么[重复] 【发布时间】:2016-10-29 16:22:17 【问题描述】:我想问一个关于控制日期时间的空值的问题。
if (mydatetime != null)
或
if(mydatetime.hasvalue)
哪个更好,哪个更合适,为什么?
谢谢。
【问题讨论】:
它们并不完全相同。HasValue
仅当 var 为 Nullable 时才有效
第一个如果有值则为真,第二个如果没有值则为真。 !
可能太多了。
我的是可以为空的datetime(datetime?my datetime=null),这种情况下有什么区别吗?
@Aurora 没有区别,保持一致
【参考方案1】:
与!=null
的第一个比较是有效的比较,而第二个只能在变量声明为Nullable 时使用,或者换句话说,与.HasValue
的比较只能在DateTime 变量声明为时使用可以为空
例如:
DateTime dateInput;
// Will set the value dynamically
if (dateInput != null)
// Is a valid comparison
if (dateInput.HasValue)
// Is not a valid comparison this time
在哪里
DateTime? dateInput; // nullable declaration
// Will set the value dynamically
if (dateInput != null)
// Is a valid comparison
if (dateInput.HasValue)
// Is also valid comparison this time
【讨论】:
【参考方案2】:如果你问
if (mydatetime != null)
您正在检查变量是否已被实例化。
如果它实际上是没有实例化,下面的语句会给你
NullReferenceException
if(!mydatetime.hasvalue)
因为您试图访问 null
对象的属性
仅当您将DateTime
声明为Nullable
时,它才会显示相同的行为。
Nullable<DateTime> mydatetime = null;
Console.WriteLine(mydatetime.HasValue);
【讨论】:
以上是关于DateTime.hasvalue vs datetime == null,哪个更好以及为啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章
PHP \DateTime vs date() DST shift bug?
VS2013 The Debugger Resource DLL is out of date
java获取时间的几种方式Date VS LocalDate
MySQL date_format() 函数 vs SQL Like 运算符