Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > ForEach в двумерных массивах


Автор: hexzo 10.10.2011, 16:52
Код

int[,] a ={ {1, 2, 3},{4,5,6},{7,8,9} };
Array.ForEach(a, (int i) => { });


Ошибка: cannot convert from 'int[*,*]' to 'int[]'
Что то я не вкурил, какой тип должен быть у i? И что ещё за звёздочки?

Автор: Brilona 11.10.2011, 08:27
Вы объявляете двумерный массив, а потом пытаетесь каждый его элемент привести к целому значению. Первый элемент в Вашем массиве будет "{1, 2, 3}" - его не получится привести к int. Попробуйте так
Код

Array.ForEach(a, (int i[]) => { });

Автор: hexzo 11.10.2011, 10:25
Brilona
Цитата

Вы объявляете двумерный массив, а потом пытаетесь каждый его элемент привести к целому значению. 

Ну так через foreach всё приводится к int-у.

Цитата

Попробуйте так:

cannot convert from 'int[*,*]' to 'int[][]'

Автор: priboltik 11.10.2011, 17:13
А собственно чем не устраивает использование оператора foreach?

Автор: KelTron 12.10.2011, 14:10
Во-первых ForEach требует первым параметром одномерный массив, а ты передаёшь ему многомерный.
Во-вторых класс Array реализует интерфейс IEnumerable, но не IEnumerable<T>, поэтому придётся сделать явное преобразование к типизированному итератору.

В итоге имеем:
Код

Array.ForEach(a.Cast<int>().ToArray(), i => { });

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)