2015-12-28 63 views
2

的,我需要做一些重構和我碰到這樣的:檢查.HasValue和.value的用於Nullabe牛逼

if(LoanTerms.RateIncreasable.HasValue && LoanTerms.RateIncreasable.Value) { ... } 

LoanTerms.RateIncreasable類型爲System.Nullable<bool>

所以我不知道我需要.HasValue檢查嗎?在if語句中將null視爲false?

回答

11

由於bool默認爲false您可以使用此代碼,做你需要的一切:

if(LoanTerms.RateIncreasable.GetValueOrDefault()) { ... } 

欲瞭解更多信息,請查看文檔的MSDN: Nullable(T).GetValueOrDefault()

但是,爲了回答你的問題:如果Nullable<T>null(即HasValue == false)是不合法的讀取Nullable<T>Value屬性,你會得到一個異常。因此,如果您絕對必須閱讀Value,請確保它具有第一個值。

1

以下代碼將處理您的問題。

if(LoanTerms.RateIncreasable.GetValueOrDefault()) { ... } 

如果你打電話GetValueOrDefault它會檢查是否HasValuetruefalse

public T GetValueOrDefault(T defaultValue) 
{ 
    return HasValue ? value : defaultValue; 
}