的,我需要做一些重構和我碰到這樣的:檢查.HasValue和.value的用於Nullabe牛逼
if(LoanTerms.RateIncreasable.HasValue && LoanTerms.RateIncreasable.Value) { ... }
和LoanTerms.RateIncreasable
類型爲System.Nullable<bool>
所以我不知道我需要.HasValue
檢查嗎?在if語句中將null
視爲false?
的,我需要做一些重構和我碰到這樣的:檢查.HasValue和.value的用於Nullabe牛逼
if(LoanTerms.RateIncreasable.HasValue && LoanTerms.RateIncreasable.Value) { ... }
和LoanTerms.RateIncreasable
類型爲System.Nullable<bool>
所以我不知道我需要.HasValue
檢查嗎?在if語句中將null
視爲false?
由於bool
默認爲false
您可以使用此代碼,做你需要的一切:
if(LoanTerms.RateIncreasable.GetValueOrDefault()) { ... }
欲瞭解更多信息,請查看文檔的MSDN: Nullable(T).GetValueOrDefault()。
但是,爲了回答你的問題:如果Nullable<T>
值null
(即HasValue == false
)是不合法的讀取Nullable<T>
的Value
屬性,你會得到一個異常。因此,如果您絕對必須閱讀Value
,請確保它具有第一個值。
以下代碼將處理您的問題。
if(LoanTerms.RateIncreasable.GetValueOrDefault()) { ... }
如果你打電話GetValueOrDefault
它會檢查是否HasValue
是true
或false
:
public T GetValueOrDefault(T defaultValue)
{
return HasValue ? value : defaultValue;
}