为什么 Enumerable.Sum() 处理空值不同于加法?

问题描述 投票:0回答:0

System.Linq.Enumerable.Sum() 与直接加法不同的行为背后的逻辑是什么?

var x = 1 + null;                      // x = null
var y = new int?[]{ 1, null }.Sum();   // y = 1

Sum 忽略空值。我对为什么感兴趣。

public static int? Sum(this IEnumerable<int?> source)
{
    if (source == null) throw new ArgumentNullException(nameof(source));

    int num = 0;
    foreach (int? item in source)
    {
        if (item.HasValue)
            num = checked(num + item.GetValueOrDefault());
    }
    return num;
}
c# linq null sum addition
© www.soinside.com 2019 - 2024. All rights reserved.