Пытаюсь перебрать массивы массивов через foreach: Ошибка
int[][] anArray = {new int[] {123,432}, new int[] {543,542}};
foreach (int i in anArray) //ошибка
foreach (int j in anArray[i])
Console.WriteLine(anArray[i][j]);
Console.ReadKey();
Но при переборе через for все хорошо
int[][] anArray = {new int[] {123,432}, new int[] {543,542}};
for (int i = 0; i < anArray.Length; i++)
for (int j = 0; j < anArray[i].Length; j++)
Console.WriteLine(anArray[i][j]);
Console.ReadKey();
В чем дело?
Замени int на var в foreach.
У тебя же массив массивов => там int[]
Правильно:
foreach (int[] arr in anArray)
foreach (int x in arr)
Console.WriteLine(x);
Цикл foreach используется для итерации по коллекции (или последовательности) и на каждом шаге он выдает следующий элемент конкретной коллекции (последовательности).
Цикл for же более универсален, на каждой итерации он просто меняет некую переменную (или несколько переменных, или ничего не меняет) по некоторому правилу, а также проверяет некие граничные условия (или ничего не проверяет), у вас, в частности, меняются в циклах for переменные i, j, которые вы используете в качестве индекса массива.
У вас массив массивов, поэтому внешний foreach возвращает поочередно все "внутренние" массивы из массива "внешнего".
Ещё один метод, возможно, вам подойдёт:
foreach (int v in anArray.SelectMany(x => x))
Console.WriteLine(v);
int[][] anArray = {new int[] {123,432}, new int[] {543,542}};
foreach (int[] i in anArray) { // anArray содержит 2мерный массив, значит i должен быть массивом, а не элементом.
foreach (int j in i) {
Console.WriteLine(j);
}
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости