DateTime.hasvalue vs datetime == null,哪一个更好,为什么

时间:2016-06-27 15:16:39

标签: c# performance datetime null

我想问一个关于日期时间控制空值的问题。

if (mydatetime != null)

if(mydatetime.hasvalue)

哪一个更好,或更合适,为什么?

谢谢。

2 个答案:

答案 0 :(得分:3)

第一次比较!=null是一个有效的比较所有时间,因为只有当变量被声明为Nullable时才能使用第二个比较,或者换言之,只有在使用DateTime时才能使用与.HasValue的比较变量声明为Nullable

例如:

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        
}

答案 1 :(得分:0)

如果你问

if (mydatetime != null) 

您正在检查变量是否已实例化

如果实际上实例化,则以下语句将为您提供 一个NullReferenceException

if(!mydatetime.hasvalue)

因为您尝试访问null

对象的属性

仅当您将DateTime声明为Nullable时,它才会显示相同的行为。

Nullable<DateTime> mydatetime = null;

Console.WriteLine(mydatetime.HasValue);