Пытаюсь перебрать массивы массивов через 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);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В программе создаются и удаляются объекты, в них есть события и метод который запускается в отдельном потокеВ этом методе который будет работать...
В Visual Studio есть Windows Forms ApplicationА есть ли это в Rider? Никак не могу найти
Доброго времени сутокПытаюсь реализовать очередь на отправку сообщений