21 октября 2012 г.

Как вывести список на экран одной строкой в C#

Абсолютно в каждом приложении рано или поздно может потребоваться отобразить содержимое некой коллекции (чаще всего списка) на экран. Стандартный способ, доступный в большинстве объектно-ориентированных языков, таких как C# или Java, является использование цикла for или его более частного случая foreach:
foreach (SomeClass s in someCollection)
{
Console.WriteLine(s.ToString());
}
Но это довольно громоздкая запись для столь простого действия. Писать целых пять строк, чтобы вывести одну! Поэтому я предлагаю использовать более компактное решение.

Итак, пусть SomeClass - это наш класс, в котором переопределён метод ToString (если вы его ещё не переопределили, то самое время это сделать). someCollection имеет тип List<SomeClass>. Тогда указанный выше код можно свести к одной строке:

someCollection.ForEach(Console.WriteLine);
Этой строки достаточно для того, чтобы каждый элемент был выведен в консоль в отдельной строке. Здесь используется делегат (delegate), он же "указатель на функцию" Console.WriteLine.

Более подробная запись этой же команды при помощи лямбда-выражения:
ForEach(i => { Console.WriteLine(i); })
То, что передаётся методу ForEach в качестве параметра - это анонимный метод, записанный кратко в виде лямбда-выражения. Этот метод принимает единственный параметр i, а затем возвращает то, что записано в фигурных скобках. Вместо вызова метода Console.WriteLine вы можете подставить то, что требуется именно вам. Например, добавление записи в лог или БД.

Комментариев нет:

Отправить комментарий