如何总结一个在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);