为Nullabe of T检查.HasValue和.Value

fre*_*hbm 2 c#

我需要做一些重构,我遇到了这个:

if(LoanTerms.RateIncreasable.HasValue && LoanTerms.RateIncreasable.Value) { ... }
Run Code Online (Sandbox Code Playgroud)

并且LoanTerms.RateIncreasable是类型System.Nullable<bool>

所以我想知道我需要.HasValue检查一下吗?null在if语句中会被视为false吗?

ang*_*son 11

由于默认bool值为,false您可以使用此代码执行您需要的所有操作:

if(LoanTerms.RateIncreasable.GetValueOrDefault()) { ... }
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看MSDN上的文档:Nullable(T).GetValueOrDefault().

但要回答你的问题:如果值是(即),读取Value属性是不合法的,你会得到一个例外.因此,如果您绝对必须阅读,请确保它首先具有值.Nullable<T>Nullable<T>nullHasValue == falseValue