C# 检查T的Nullabe的.HasValue和.Value
我需要进行一些重构,我发现:C# 检查T的Nullabe的.HasValue和.Value,c#,C#,我需要进行一些重构,我发现: if(LoanTerms.RateIncreasable.HasValue && LoanTerms.RateIncreasable.Value) { ... } 和loantrems。rate increasable属于System.Nullable类型 所以我想知道我是否需要.HasValue检查这个?在if语句中,null是否会被视为false?因为bool的默认值是false您可以使用此代码,它可以完成所有需要的操作: if(LoanTer
if(LoanTerms.RateIncreasable.HasValue && LoanTerms.RateIncreasable.Value) { ... }
和loantrems。rate increasable
属于System.Nullable类型
所以我想知道我是否需要.HasValue
检查这个?在if语句中,null
是否会被视为false?因为bool
的默认值是false
您可以使用此代码,它可以完成所有需要的操作:
if(LoanTerms.RateIncreasable.GetValueOrDefault()) { ... }
有关更多信息,请参阅中的文档
但要回答您的问题:读取Nullable
的Value
属性是不合法的,如果Nullable
值是null
(即HasValue==false
),您将得到一个异常。因此,如果您必须阅读值,请确保它首先有一个值。以下代码将处理您的问题
if(LoanTerms.RateIncreasable.GetValueOrDefault()) { ... }
如果调用GetValueOrDefault
,它会检查HasValue
是true
还是false
:
public T GetValueOrDefault(T defaultValue)
{
return HasValue ? value : defaultValue;
}