如何总结一个在C#中的整数数组

有没有更好的更短的方式比迭代数组?

int[] arr = new int[] { 1, 2, 3 }; int sum = 0; for (int i = 0; i < arr.Length; i++) { sum += arr[i]; } 

澄清:

更好的主要意味着更清洁的代码,但对性能改进的暗示也是受欢迎的 (就像已经提到的:分裂大数组)。


这不是我寻找杀手性能改进 – 我只是想知道,这种语法糖是不是已经可用:“有String.Join – 什么诠释int []?”。

假设您可以使用C#3.5和LINQ,请尝试

 int sum = arr.Sum(); 

就在这里。 使用.NET 3.5:

 int sum = arr.Sum(); Console.WriteLine(sum); 

如果你不使用.NET 3.5,你可以这样做:

 int sum = 0; Array.ForEach(arr, delegate(int i) { sum += i; }); Console.WriteLine(sum); 

使用LINQ:

 arr.Sum() 

这取决于你如何定义更好。 如果您希望代码看起来更干净,则可以使用.Sum(),如其他答案中所述。 如果您希望操作快速运行,并且您有一个大型数组,可以将它拆分为小数,然后对结果求和。

如果你不喜欢LINQ,最好使用foreach循环来避免出现索引。

 int[] arr = new int[] { 1, 2, 3 }; int sum = 0; foreach (var item in arr) { sum += item; } 

使用foreach将会是更短的代码,但是在JIT优化可以在for循环控制expression式中识别与Length的比较之后,可能会在运行时执行完全相同的步骤。

 using System; using System.Collections.Generic; { class Program { static void Main(string[] args) { int sum = 0; int[] arr = new int[8] { 10, 20, 30, 40, 5, 6, 7, 8 }; for (int i = 0; i < arr.Length; i++) { sum += arr[i]; } } } } 

你可以通过以下任何一种方式来做到这一点:

  1] int sum = items.Sum(); Or 2] Array.ForEach(items, x=> sum += x);