C#二维整数数组,对所有元素求和

C#二维整数数组,对所有元素求和,c#,arrays,C#,Arrays,我试图制作一个程序,对数组中的元素求和。但我在MVS上有“系统。索引自动失效异常””错误。谁能告诉我哪里错了 public static int Sum(int[,] arr) { int total = 0; for (int i = 0; i <= arr.Length; i++) { for (int j = 0; j <= arr.Length; j++) { total += arr[i,j];

我试图制作一个程序,对数组中的元素求和。但我在MVS上有“系统。索引自动失效异常””错误。谁能告诉我哪里错了

public static int Sum(int[,] arr)
{
    int total = 0;
    for (int i = 0; i <= arr.Length; i++)
    {
        for (int j = 0; j <= arr.Length; j++)
        {
            total += arr[i,j];
        }
    }
    return total;
}

static void Main(string[] args)
{
    int[,] arr = { { 1, 3 }, { 0, -11 } };
    int total = Sum(arr);

    Console.WriteLine(total);
    Console.ReadKey(); 
}
公共静态整数和(整数[,]arr)
{
int-total=0;

对于(int i=0;i问题是您的循环正在检查Try Linq


您必须获得每个维度的长度(2D数组的
length
属性是数组中的项目总数),比较应该是
Cast().Sum()
。不需要检查类型,这只是问题的一半。在这种情况下,
长度
是4,而不是2。您必须使用
GetLength
来获取每个维度的长度。
  int[,] arr = { { 1, 3 }, { 0, -11 } };

  int total = arr.OfType<int>().Sum();
  int total = 0;

  foreach (var item in arr)
    total += item;
for (int i = 0; i < arr.GetLength(0); i++)
{
    for (int j = 0; j < arr.GetLength(1); j++)
    {
         total += arr[i,j];
    }
}
foreach (int item in arr)
{
    total += item;
}
int total = arr.Cast<int>().Sum();