如何使用运算符“??” 浮动类型

iro*_*man -1 c#

我收到错误:

Operator '??' cannot be applied to operands of type 'float' and 'float'

我想要一套'var result' ,如果float列表中的属性不为空或空。如果它为空,则使用 的默认float0.0f

我收到错误的代码是这样的:

var result = calculationsList.Where(x => x.SomeValue == 123).FirstOrDefault().Value ?? 0.0f;
Run Code Online (Sandbox Code Playgroud)

我也试过:

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

Joe*_*orn 6

以下是运营商官方文档??的摘录:

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

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

如果列表中的浮点属性不为空或为空,我正在尝试设置“var 结果”。

没有空或空浮点数之类的东西!它是一种值类型,而值类型从不null