如何使用运算符“??”浮动类型
c#
我收到错误:
Operator '??' cannot be applied to operands of type 'float' and 'float'
我想要一套'var result' ,如果在float列表中的属性不为空或空。如果它为空,则使用 的默认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 及更早版本中,?? 的左侧操作数的类型。运算符必须是引用类型或可为空值类型。从 C# 8.0 开始,该要求被替换为以下内容:?? 左侧操作数的类型。和 ??= 运算符不能是不可为 null 的值类型。
换句话说,运算符的左侧必须是实际允许的东西null。该float类型不符合该要求,但float?将符合该要求。
如果列表中的浮点属性不为空或为空,我正在尝试设置“var 结果”。
没有空或空浮点数之类的东西!它是一种值类型,而值类型从不null。