据我所知,如果记录集为空,linq 方法 FirstOrDefault()
返回 null
。为什么不能对函数使用 ??
运算符?像这样:
Double d = new Double[]{}.FirstOrDefault() ?? 0.0;
更新
我不想稍后在我的代码中检查 d
是否为 null
。并做:
Double d new Double[]{}.FirstOrDefault() == null
? 0.0
: new Double[]{}.FirstOrDefault();
...或者:
var r = new Double[]{}.FirstOrDefault();
Double d = r == null ? 0.0 : r;
... 似乎有点矫枉过正——我想在一行代码中执行此空值检查。
最佳答案
实际上,FirstOrDefault<T>()
返回 T,它是一个值或 default(T)
.
default(T)
是 null
或 (T)0
对于值类型(如 double
)
关于c# - FirstOrDefault() 无法与 ??运算符(operator),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3476435/