代码之家  ›  专栏  ›  技术社区  ›  Vishal

我可以直接添加一个整数列表而不循环它吗?

c#
  •  3
  • Vishal  · 技术社区  · 15 年前

    我有一个整数列表-

    List<int> intlist= new List<int>();
    

    我能说吗-

    intlist.Sum();//I know sum() is already there as a function but I dont know how I can use it
    

    在不循环的情况下得到这个列表的和。

    3 回复  |  直到 15 年前
        1
  •  11
  •   Mark Byers    15 年前

    是的,你可以用 Sum 像那样。只需将结果分配给:

    int s = intList.Sum();
    

    现在,列表中的数字之和存储在一个名为 s .

    实际上是一种扩展方法 Enumerable.Sum 添加到.NET 3.5中,它不仅适用于列表。

    当然,在内部,这仍然会循环遍历数字并将其相加,但是调用这个方法要比自己编写它容易得多。使用.NET Reflector,您可以看到实现非常简单:

    public static int Sum(this IEnumerable<int> source)
    {
        if (source == null)
        {
            throw Error.ArgumentNull("source");
        }
    
        int num = 0;
        foreach (int num2 in source)
        {
            num += num2;
        }
        return num;
    }
    

    注意还有一个 Queryable.Sum 方法。这允许您对数据库中的数字求和,而不需要提取它们并在本地循环它们。相反,可以在数据库中执行sum操作,只返回结果。

        2
  •  2
  •   TheJacobTaylor    15 年前

    要计算列表的总和,您要么需要在添加项时计算它,要么在以后浏览列表。如果调用一个遍历列表的函数,或者自己遍历列表,没有太大的区别。

    所以,要回答你的问题,不,除非你把总数作为项相加。

    这是什么语言,为了它的价值?

        3
  •  0
  •   Lalith    15 年前

    这个 link 也许会帮助你。

    “”您要用C编程语言计算整数数组或整数列表中所有数字的总和。LINQ中的SUM扩展方法提供了一种很好的方法,只需最少的调用代码就可以做到这一点,但也有一些缺点和优点。在这里,我们将介绍如何使用C语言中System.Linq命名空间中的sum扩展方法,并在数组和列表中看到一个示例。