2016-06-27 36 views
3

我想問一個關於的問題,控制日期時間的空值DateTime.hasvalue vs datetime == null,哪一個更好,爲什麼

if (mydatetime != null) 

if(mydatetime.hasvalue) 

哪一個更好,或者適當的,爲什麼?

謝謝。

+0

它們並不完全等效。 'HasValue'只有在var是可爲空的時纔有效 – Plutonix

+0

第一個是真的,如果它有一個值,第二個是真的,如果它沒有值。可能有一個'!'太多了。 –

+0

我是可以空datetime(datetime?我的datetime = null),在這種情況下有什麼區別? – Aurora

回答

0

如果你問

if (mydatetime != null) 

正在檢查的變量是否蜂實例

如果它實際上是實例下面的語句會給你 一個NullReferenceException

if(!mydatetime.hasvalue) 

,因爲您嘗試訪問012的對象的屬性

只有當您聲明DateTimeNullable時,它纔會顯示相同的行爲。

Nullable<DateTime> mydatetime = null; 

Console.WriteLine(mydatetime.HasValue); 
3

首先比較!=null是有效的比較所有的時間,其中爲第二如果變量聲明爲空,或與.HasValue換句話說比較可以僅用於當日期時間變量聲明爲只可用於可空

例如:

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   
} 
相關問題