gpt4 book ai didi

c# - Enumerable.Sum 如何绑定(bind)到数组类型?

转载 作者:太空宇宙 更新时间:2023-11-03 18:27:05 25 4
gpt4 key购买 nike

我对 LINQ sum 方法的工作原理感到困惑。因此,例如,我们有一个 int 数组,而 int 结构没有 sum 方法。

但是当我们包含 LINQ 时,它神奇地起作用了。如何将 sum 方法添加到结构中以便我们可以调用 arr.sum() ?通过某种继承或如何?

最佳答案

How is the sum method added to the structure

大多数集合类实现了IEnumerable<T> . Sum ,如您的示例所示,是 extension method对于 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有很多重载,每个都有不同类型的整数和浮点类型。他们可以找到 here如果你有兴趣。所有扩展方法都应用于给定类型。鉴于数组实现了 IEnumerable<T> ,它还将这些方法作为附加组件获取。

关于c# - Enumerable.Sum 如何绑定(bind)到数组类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31902894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com