Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csPmFnER 166 of 436 menu
◀ ▶

Досрочный выход из функции в C#

После того, как выполнится инструкция return, функция закончит свою работу. То есть после выполнения return больше никакой код не выполнится.

Смотрите пример:

int Func(int num) { return num * num; Console.WriteLine("!"); // this code never runs } int res = Func(3); Console.WriteLine(res); // prints 9

Это не значит, что в функции должен быть один return. Но выполнится только один из них.

В следующем примере в зависимости от значения параметра выполнится либо первый, либо второй return:

string Func(int num) { if (num >= 0) { return "+"; } else { return "-"; } } Console.WriteLine(Func(3)); // prints + Console.WriteLine(Func(-3)); // prints -

Пусть у нас есть функция, возвращающая сумму чисел от 1 до 5:

int Func() { int sum = 0; for (int i = 1; i <= 5; i++) { sum += i; } return sum; } int res = Func(); Console.WriteLine(res); // prints 15

Пусть теперь мы расположим return внутри цикла, вот так:

int Func() { int sum = 0; for (int i = 1; i <= 5; i++) { sum += i; return sum; } return sum; // never reached } int res = Func(); Console.WriteLine(res); // prints 1

В этом случае цикл прокрутится лишь одну итерацию и произойдет автоматический выход из функции (ну и заодно из цикла). А за одну итерацию цикла в переменной sum окажется лишь число 1, а не вся нужная сумма.

То, что return расположен внутри цикла, не всегда может быть ошибкой.

В следующем примере сделана функция, которая определяет, сколько первых чисел, начиная с 1, нужно сложить, чтобы сумма стала больше или равна 10:

int Func() { int sum = 0; for (int i = 1; i <= 5; i++) { sum += i; if (sum >= 10) { return i; } } return 0; } int res = Func(); Console.WriteLine(res); // prints 4

А в следующем примере сделана функция, которая вычисляет, сколько целых чисел, начиная с 1, нужно сложить, чтобы результат был больше 100:

int Func() { int sum = 0; int i = 1; while (true) { sum += i; if (sum >= 100) { return i; } i++; } } Console.WriteLine(Func()); // prints 14

Что выведется в консоль в результате выполнения следующего кода:

int Func(int num1) { return num1; int num2 = num1 * num1; return num2; } Console.WriteLine(Func(3));

Объясните почему.

Что выведет каждый из Console.WriteLine в результате выполнения следующего кода:

int Func(int num) { if (num <= 0) { return -num; } else { return num * num; } } Console.WriteLine(Func(10)); Console.WriteLine(Func(-5));

Объясните почему.

Что выведет каждый из Console.WriteLine в результате выполнения следующего кода:

int Func(int num) { if (num <= 0) { return -num; } return num * num; } Console.WriteLine(Func(10)); Console.WriteLine(Func(-5));

Объясните почему.

Что выведется в консоль в результате выполнения следующего кода:

int Func(int num1) { int num2 = 0; for (int i = 1; i <= num1; i++) { num2 += i; return num2; } return num2; } Console.WriteLine(Func(5));

Объясните почему.

Что хотел сделать автор данного кода? Исправьте ошибку автора.

Напишите функцию, которая параметром будет принимать число и делить его на 2 столько раз, пока результат не станет меньше 10. Пусть функция возвращает количество итераций, которое потребовалось для достижения результата.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить