我试图用这个语句迭代一个数组:foreach(arr2D中的int [] arr)。它在Java中的工作方式类似。为什么它不适用于C#?谢谢!
public static int[] RowSums(int[,] arr2D)
{
int[] sums = new int[arr2D.Length];
int rowCount = 0;
foreach (int[] arr in arr2D)
{
sums[rowSums] = ArraySum(arr);
rowSums++;
}
return sums;
}
答案 0 :(得分:1)
int [,]不是int []的IEnumerable,而是int。因此,你不能在foreach循环中使用它。此外,您必须使用Array.GetLength()方法来查找每行中的元素数。
main.dart
答案 1 :(得分:1)
这不是解决问题的正确方法。您当前正在使用多维数组(int[n,n]
),这些不提供处理行或列的任何方法(假设您有三维数组 - >行是什么意思?)。如果要将值迭代为行,则应使用锯齿状数组(int[n][]
)。您的代码将变为类似于此:
public static int[] RowSums(int[][] arr2D)
{
//declare variables
int[] sums = new int[arr2D.GetLength(0)];
int rowSums = 0;
//loop through array rows
foreach (int[] arr in arr2D)
{
//accumulate row sum
sums[rowSums] = ArraySum(arr);
//update counter
rowSums++;
} //end foreach
return sums;
} //RowSums
答案 2 :(得分:0)
使用列表<> object和Linq使代码变得微不足道
public static List<int> RowSums(List<List<int>> arr2D)
{
return arr2D.Select(x => x.Sum()).ToList();
}