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

**URL:** <https://forum.itvdn.com/t/urok-7-rassmotrenie-upravlyayushhej-struktury-return/3171>\
**Category:** Справочник C# Starter\
**Created:** [08.02.2019 15:24:01 UTC](https://forum.itvdn.com/t/urok-7-rassmotrenie-upravlyayushhej-struktury-return/3171 "2019-02-08T15:24:01Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![admin.guide](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/a/6a8cbe/32.png) [@admin.guide](https://forum.itvdn.com/u/admin.guide)\
**Post date:** [08.02.2019 15:24:01 UTC](https://forum.itvdn.com/t/urok-7-rassmotrenie-upravlyayushhej-struktury-return/3171/1 "2019-02-08T15:24:01Z")

</div>

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

```

Источник: видеоурок Александра Шевчука ["МЕТОДЫ"](https://itvdn.com/ru/video/csharp-starter/methods)

[![%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](https://forum.itvdn.com/uploads/default/original/1X/b38ed3846d27463ae91c4449efd4de36bbb0b1b1.jpeg) предыдущая статья](https://forum.itvdn.com/t/urok-7-funkczii-i-proczedury/3170) | [следующая статья ![%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](https://forum.itvdn.com/uploads/default/original/1X/6188b82e0808cd73a15f53f8e652f939106184bc.jpeg)](https://forum.itvdn.com/t/urok-7-sozdanie-metodov-ponyatie-signatury-metoda/3172)
