Это первая вводная статья про цикл foreach, во второй мы рассмотрим foreach более детально.
В данной статье расскажу, что же такое цикл foreach, как им пользоваться на простеньких примерах
и сравню его с обычным for.
Цикл foreach предназначен для перебора каждого элемента массива или объектов некоторой коллекции.
Сразу посмотрим пример:
-
-
int sum = 0;
-
List<int> intList = new List<int>(){ 3, 2, 5, 10};
- foreach(int value in intList)
- {
- sum += value;
- }
-
В приведенном выше коде мы определяем сумму элементов списка intList. Вначале объявляем
переменную sum и инициализируем её нулем. Затем заполняем наш список intList значениями 3, 2, 5, 10.
Дальше идет наш цикл foreach. В круглых скобках пишем тип объекта, который содержится в нашем списке — это int,
и переменную, которая будет на каждой итерации получать очередное значение из intList’а.
Затем пишем ключевое слово in, после которого идет коллекция intList. В самом цикле мы уже непосредственно
рассчитываем сумму элементов списка. Ничего сложного вроде.
А теперь посмотрим как бы выглядело решение этой же задачки, но с использованием обычного цикла for:
-
-
int sum = 0;
-
List<int> intList = new List<int>(){ 3, 2, 5, 10};
- for(int i = 0; i < intList.Count; i++)
- {
- sum += intList[i];
- }
-
Если сравнить два исходных кода с циклом for и foreach, можно заметить, что второй пример выглядит
немного посложнее, но более привычно (для тех кто еще только знакомиться с foreach). Необходимо чуток побольше
кодить, а именно объявлять переменную счетчик, указывать условие выхода из цикла. Плюс к этому, следить и контролировать, чтобы случайно
не выйти за пределы коллекции. Например, случайно ошибившись и написав i <= intList.Count, мы получим
исключение ArgumentOutOfRangeException. В цикле foreach подобных телодвижении производить не нужно,
мы всегда обойдем все элементы и не выйдем за пределы коллекции, за исключение некоторых случаев :
- если в цикле foreach присутствует break;
- если присутствует — goto;
- если в цикле вылетает исключение;
И напоследок приведу еще один пример с циклом foreach для определения максимального значения.
Только на этот раз обходить будем элементы массива, а не список List:
-
-
int []array = { 0, 3, 10, 1, 11};
-
int max = array[0];
-
foreach(int value in array)
-
{
-
if (max < value)
-
max = value;
-
}
-
На этом пожалуй остановимся и более подробно рассмотрим foreach во второй статье по данной теме.