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我已经纠正了拼写错误。谢谢