Урок 7. Рассмотрение управляющей структуры return

Оператор 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, то компилятор выдаст ошибку
}

Источник: видеоурок Александра Шевчука "МЕТОДЫ"

%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BB%D0%B5%D0%B2%D0%BE%202 предыдущая статья | следующая статья %D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%202