You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# Linq中Sum方法能否返回null?为何定义为double?

Linq Sum<double?> 相关疑问解答

1. Sum<double?> 能否返回null?

不能。无论你传入的序列是空、全为null,还是混合null与非null值,Sum<double?>的返回结果永远是一个有值的double?(即HasValue为true),不会返回null。

比如这些测试场景的结果都是0(而非null):

  • new List<double?>(){null,null}.Sum()
  • new List<double?>(){0,null}.Sum()
  • new List<double?>().Sum()(空序列)

2. 为什么它的返回类型定义为double?而非double?

这是.NET框架设计时的签名一致性考量:

  • 对于nullable数值类型的其他聚合函数(比如Average<double?>、Min<double?>、Max<double?>),确实存在返回null的场景(比如序列为空或所有元素都是null时,Average会返回null)。
  • 为了让同类型的聚合方法签名保持统一,Sum<double?>也沿用了double?作为返回类型,尽管它的实际实现中永远不会返回null(内部会把null元素视为0进行累加,空序列的累加结果也是0)。

内容的提问来源于stack exchange,提问作者Jeffrey Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:50:20