2011-11-08 52 views
2

使用空合併運算符與給出的方法比較

public static bool IsDateValid(DateTime? date) 
{ 
    if (date.HasValue ? date.GetValueOrDefault() < MinDate : false) 
    { 
     return false; 
    } 

    return date.GetValueOrDefault() < MaxDate; 
} 

是否有可能改寫if語句,使得它使用空合併運算符?

回答

7

您可以

return date.GetValueOrDefault() < MaxDate && Date > MinDate; 

GetValueOrDefault()更換整個功能將reutnr空DateTime(這是DateTime.MinValue),如果是空的,不會是> MaxDate

您可以編寫明確過:

return (date ?? DateTime.MinValue) < MaxDate && Date > MinDate; 

但是,你甚至不需要說:

return Date > MinDate && date < MaxDate; 

可空類型已解除比較運算符返回false,如果一個參數爲null。

+0

我想我使用null-coalescing操作符的願望是一種紅鯡魚。你最後的例子正是我所期待的。謝謝。 –