Оператор return
– это управляющая структура, которая позволяет программе в нужный момент завершить работу метода. В результате метод завершается через нормальный канал выхода, возвращая управление вызывающему методу (продолжит выполнение программы с инструкции, следующей после вызова метода).
Используйте return
, если это повышает читабельность метода.
Используйте return
, как сторожевой оператор досрочного выхода, поскольку он останавливает выполнение метода.
Методы могут возвращать значения вызывающим их объектам. Если тип возвращаемого значения, указываемый перед именем метода, не равен void
, для возвращения значения используется ключевое слово return
.
В результате выполнения инструкции с ключевым словом return
, после которого указано значение нужного типа, вызвавшему метод объекту будет возвращено это значение.
Если тип возвращаемого значения void
, инструкцию return
без значения все равно можно использовать для завершения выполнения метода, например:
void Method()
{
int userNumber = int.Parse(Console.ReadLine());
for (int i = 0; i < 100; i++)
{
if (i != userNumber)
{
// do something ...
}
else
{
return;
}
}
}
Если ключевое слово return
отсутствует, выполнение метода завершится, когда будет достигнут конец его блока кода.
Для возврата значений методами с типом возвращаемого значения отличным от void
необходимо обязательно использовать ключевое слово return
.
Чтобы использовать возвращаемое методом значение в вызываемом методе, вызов метода можно поместить в любое место кода, где требуется значение соответствующего типа, например:
static int Inc(int number)
{
return number++;
}
static void Main(string[] args)
{
Console.WriteLine(Inc(121)); // 122
int a = 10;
a = Inc(a);
Console.WriteLine(a); // 11
Console.ReadKey();
}
С примера выше также следует, что возвращаемое значение метода можно присвоить переменной.
Кроме этого программистами было принято отдельную группу методов (возвращаемое значение которых имеет тип bool
) называть методами предикатами.
Примечание: если нужно указать возврат значения не в конце метода, а где-то во время его выполнения (например в условных конструкциях), то это нужно реализовывать так, что бы метод во всех возможных ситуациях что-то возвращал. Если небыли проверены все ситуации (существуют ситуации в которых метод не встречает ключевое слово return
), то на этапе компиляции будет ошибка. Например:
static string Compare(int value1, int value2)
{
if (value1 < value2)
{
return "Comparison Less Then";
}
else if (value1 > value2)
{
return "Comparison Greater Then";
}
return "Comparison Equal"; //если тут будет отсутствовать return, то компилятор выдаст ошибку
}
Источник: видеоурок Александра Шевчука "МЕТОДЫ"