Enumerable.Sum绑定到数组类型
本文关键字:数组 类型 绑定 Sum Enumerable | 更新日期: 2023-09-27 18:07:07
我对LINQ求和方法是如何工作的感到困惑。例如,我们有一个int
数组,而int结构没有sum
方法。
但是当我们包含LINQ时,它就神奇地做到了。如何将sum方法添加到结构中,以便我们可以调用arr.sum()
?通过某种继承还是怎样?
如何将sum方法添加到结构
中
大多数集合类实现IEnumerable<T>
。Sum
,在你的例子中,是IEnumerable<T>
的扩展方法。
扩展方法本质上是带有静态方法的静态类,其中每个方法的第一个值都添加了this
关键字。这样,编译器将其识别为应用于该类型的扩展方法。
以下是Enumerable.Sum
在IEnumerable<decimal>
上声明的最简单形式:
public static decimal Sum(this IEnumerable<decimal> source)
{
if (source == null) throw Error.ArgumentNull("source");
decimal sum = 0;
foreach (decimal v in source) sum += v;
return sum;
}
Sum
有很多重载,每个重载都有不同类型的整型和浮点型。如果你感兴趣的话,可以在这里找到。所有扩展方法都应用于给定的类型。如果一个数组实现了IEnumerable<T>
,那么它也会获得这些方法作为附加。