pasar - Cómo resumir una matriz de enteros en C#
pasar un array como parametro c# (9)
¿Hay una mejor manera más corta que iterar sobre la matriz?
int[] arr = new int[] { 1, 2, 3 };
int sum = 0;
for (int i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
aclaración:
Una mejor primaria significa un código más limpio, pero sugiere mejoras en el rendimiento también son bienvenidas. (Como ya se mencionó: dividir arreglos grandes).
No es como si estuviera buscando una mejora en el rendimiento: solo me preguntaba si este tipo de azúcar sintáctica no estaba disponible: "Hay cadena. Únete - ¿qué diablos es int []?".
Con LINQ:
arr.Sum()
Depende de cómo se defina mejor. Si desea que el código se vea más limpio, puede usar .Sum () como se menciona en otras respuestas. Si desea que la operación se ejecute rápidamente y tenga una matriz grande, puede hacerla paralela dividiéndola en sumas secundarias y luego sumar los resultados.
El uso de foreach sería un código más corto, pero probablemente realice exactamente los mismos pasos en el tiempo de ejecución después de que la optimización JIT reconozca la comparación con Length en la expresión de control for-loop.
En una de mis aplicaciones que utilicé:
public class ClassBlock
{
public int[] p;
public int Sum
{
get { int s = 0; Array.ForEach(p, delegate (int i) { s += i; }); return s; }
}
}
Prueba este código:
using System;
namespace Array
{
class Program
{
static void Main()
{
int[] number = new int[] {5, 5, 6, 7};
int sum = 0;
for (int i = 0; i <number.Length; i++)
{
sum += number[i];
}
Console.WriteLine(sum);
}
}
}
El resultado es:
23
Puedes hacerlo de cualquiera de las formas:
1] int sum = items.Sum();
Or
2] Array.ForEach(items, x=> sum += x);
Sí hay. Con .NET 3.5:
int sum = arr.Sum();
Console.WriteLine(sum);
Si no está usando .NET 3.5 puede hacer esto:
int sum = 0;
Array.ForEach(arr, delegate(int i) { sum += i; });
Console.WriteLine(sum);
Si no prefiere LINQ, es mejor utilizar foreach loop para evitar que salga del índice.
int[] arr = new int[] { 1, 2, 3 };
int sum = 0;
foreach (var item in arr)
{
sum += item;
}
Siempre que pueda usar C # 3.5 y LINQ, intente
int sum = arr.Sum();