C# 如何使用运算符'';论浮点数的类型

C# 如何使用运算符'';论浮点数的类型,c#,C#,我得到了一个错误: 运算符“??”不能应用于“float”和“float”类型的操作数。 如果列表中的float属性不是空的或空的,我试图设置'var result'如果为空,则使用默认的float值0.0f 我收到的错误代码如下所示: var result = calculationsList.Where(x => x.SomeValue == 123).FirstOrDefault().Value ?? 0.0f; 我也试过: var tVal = calculationsList.

我得到了一个错误:

运算符“??”不能应用于“float”和“float”类型的操作数。

如果列表中的
float
属性不是空的或空的,我试图设置
'var result'
如果为空,则使用默认的
float
0.0f

我收到的错误代码如下所示:

var result = calculationsList.Where(x => x.SomeValue == 123).FirstOrDefault().Value ?? 0.0f;
我也试过:

var tVal = calculationsList.Where(x => x.SomeValue == 123).FirstOrDefault().Value;
var result = tVal != null ? tVal : 0.0f;

以下是一段摘录自:

在C#7.3及更早版本中,左操作数的类型??运算符必须是引用类型或可为null的值类型。从C#8.0开始,该要求被以下内容替换:的左操作数类型??and???=运算符不能是不可为空的值类型

换句话说,运算符的左侧必须是实际允许的
null
float
类型不满足该要求,但
float?
将满足该要求

如果列表中的float属性不为空或null,我将尝试设置“var result”


没有空的或空的浮点它是一种值类型,并且值类型从不
null

运算符“??”不能应用于“
float
”类型的操作数,并且 “
float


这意味着生成的类型是
float
,但是
Nullable
float?

您需要删除

var result=calculationsList.Where(x=>x.SomeValue==123).FirstOrDefault()??0.0f;
但是,如果您只想获得
0
,这是
浮点值的默认值,因此您可以执行以下操作:

var result=calculationsList.Where(x=>x.SomeValue==123).FirstOrDefault().GetValueOrDefault();

“它是一种值类型,并且值类型从不为null。”-这是一种建设性的意思,不是迂腐的(尽管看起来可能是这样),而是:
float?
是一种值类型,可以是
null
(对于涉及
null
关键字的
null
的特定语言定义)。我完全同意,在这里找到可以理解的精确单词并不容易。@gunr2171我已经纠正了拼写错误。谢谢