c# - FirstOrDefault() 无法与 ??运算符(operator)

标签 c# linq

据我所知,如果记录集为空,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/

相关文章:

c# - 使用无服务器和 AWS API 网关从 ASP .Net Core MVC 返回二进制数据

c# - 确定是绝对还是相对 URL

c# - EventHandler 和 ElapsedEventHandler 之间有什么区别?

c# - 使用 C# 和 linq 将分离的字符串拆分为层次结构

c# - 在 Linq 中将包含与相交/联合/排除一起使用

c# - 如何使用 IEnumerable.GroupBy<T> 和 3 个不同的 "qualities"在 C# LINQ 中获取计数?

c# - 是否可以在 C# 中设置 NetworkStream 对象的 CanRead 和 CanWrite 属性?

c# - 使用 Owin 中间件添加声明

c# - 使用 Linq 查找连续数字序列中变化点的索引

c# - 简单的 LINQ to SQL 嵌套选择