ProgBasics_lec03_foreach_exc_strings
.pdfforeach
Выполняет перебор последовательности элементов.
Последовательность (коллекция) –
•массив
•наследник IEnumerable, IEnumerable<T>
Не следует изменять коллекцию при перечислении.
Синтаксис foreach
foreach (<type> <элемент> in <collection>) <type> - тип элемента в коллекции
<collection> - коллекция
int[] arr = { 1, 2, 3, 4, 5, 6 }; foreach (int item in arr)
{
Console.WriteLine(item * 2);
}
Пример foreach
int[] arr = { 1, 2, 3, 4, 5, 6 }; foreach (int item in arr)
{
Console.WriteLine(item * 2);
}
for (int i = 0; i < arr.Length; i++) Console.WriteLine(arr[i] * 2);
Пример foreach
double[] arr = { 1.0, 2.0, 3.0, -9, -200, 400.0 }; double maxAbs = arr[0];
foreach (double item in arr)
{
double currentAbs = Math.Abs(item);
if (maxAbs < currentAbs) maxAbs = currentAbs;
}
foreach
Изменение хода выполнения цикла – аналогично for, while:
•break
•continue
•return
•throw
•goto
Перечисления
enum (перечисление) – набор именованных констант
public enum Color
{
Red = 1,
Green = 2,
Blue = 3
}
Console.WriteLine(Color.Green.ToString()); // Green
Перечисления
Можно задать любой целочисленный тип Можно создавать флаги.
public enum Color : long
{
Red = 1,
Green = 2,
Blue = 3
}
Обработка ошибок
Возможные действия при ошибке:
•прервать выполнение программы
•вернуть значение, означающее «ошибка»
•вывести сообщение об ошибке и вернуть вызывающей программе некоторое приемлемое значение, которое позволит ей продолжать работу
•выбросить исключение
Простая проверка ввода
Не самые гуманные способы обработки ошибок:
// пример проверки формата вводимого значения: double a;
if (!double.TryParse(Console.ReadLine(), out a))
{
Console.WriteLine(" Неверный формат "); return;
}
double a = double.Parse(Console.ReadLine()); if (a <= 0)
{
Console.WriteLine("Неверное значение (<= 0)"); return;
}
Проверка ввода
for (; ; )
{
double val = double.NaN; Console.WriteLine("Input the number:");
if (!double.TryParse(Console.ReadLine(), out val))
{
val = double.NaN;
Console.WriteLine("Wrong format. Retry? (y/n)"); if (Console.ReadKey().Key == ConsoleKey.N)
break; Console.WriteLine();
}
}