Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查T的Nullabe的.HasValue和.Value_C# - Fatal编程技术网

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;
}