检查T.的Nullabe的.HasValue和.Value
本文关键字:Value HasValue Nullabe 检查 | 更新日期: 2023-09-27 18:28:26
我需要进行一些重构,我遇到了这样的问题:
if(LoanTerms.RateIncreasable.HasValue && LoanTerms.RateIncreasable.Value) { ... }
并且CCD_ 1是类型CCD_
所以我想知道我需要.HasValue
检查吗?在if语句中,null
会被当作false处理吗?
由于bool
的默认值是false
,因此您可以使用此代码来完成所需的一切:
if(LoanTerms.RateIncreasable.GetValueOrDefault()) { ... }
有关更多信息,请参阅MSDN上的文档:Nullable(T).GetValueOrDefault().
但为了回答您的问题:如果Nullable<T>
的值是LoanTerms.RateIncreasable
0(即HasValue == false
),那么读取Nullable<T>
的Value
属性是不合法的,您将得到一个异常。因此,如果您绝对必须读取Value
,请首先确保它有一个值。
下面的代码将处理您的问题。
if(LoanTerms.RateIncreasable.GetValueOrDefault()) { ... }
如果您调用GetValueOrDefault
,它会检查HasValue
是true
还是false
:
public T GetValueOrDefault(T defaultValue)
{
return HasValue ? value : defaultValue;
}