Оператор return в методах void

Мы кратко затрагивали эту тему на прошлом занятии: оператор return можно использовать даже в методах с типом возврата void.

Методы, возвращающие значение, требуют обязательного использования оператора return;

Методы void без возвращаемого значения не требуют обязательного написания return:

Когда выполнение кода доходит до закрывающей фигурной скобки } метода, управление автоматически возвращается в вызывающий код без передачи каких-либо данных.

Однако в практической разработке часто требуется досрочно завершить работу метода. В методах void можно использовать пустой оператор return; для немедленного выхода:

Синтаксис: return; (после оператора не указывается выражение)

Ограничение: допускается использовать только внутри методов, помеченных как void

Пример:

    void SayHi()
    {
        Console.WriteLine("hello welcome to foxDevelop.com");
    }Code language: C# (cs)

Это один из предыдущих примеров, простейший метод void, внутри которого не нужен оператор return.

При вызове этого метода выполнится Writeline и выведется текст «hello welcome to foxDevelop.com»

    static void Main()
    {
        Program program = new Program();
        program.SayHi();
    }

    void SayHi()
    {

        Console.WriteLine("hello welcome to foxdevelop.com");
    }Code language: C# (cs)

Теперь добавим return;

    void SayHi()
    {
        return; // Оператор return в одиночку завершает выполнение текущего метода
        Console.WriteLine("hello welcome to foxdevelop.com");
    }Code language: C# (cs)

После запуска никакого вывода не появится. Поскольку return; находится выше Console.WriteLine, при выполнении return управление сразу переходит вызывающему коду, а последующие строки не выполняются. Это называется досрочным завершением.

Код, расположенный после оператора return, никогда не выполнится.

Таким образом, даже в методах void можно использовать return;, только после него не нужно передавать значение.

    int Add(int a, int b)
    {
        return 100;
    }Code language: C# (cs)

Методы не типа void обязаны использовать конструкцию return значение;

После return обязательно должно идти какое-либо значение: переменная, литерал (числа наподобие 100, 3.14) или выражение a+b. В любом случае необходимо вернуть результат.

Если опустить результат и написать просто return;, как в методах void, возникнет ошибка компиляции.

Несколько точек выхода с return в методе void

    static void Main()
    {
        Program program = new Program();
        program.ShowMax(100,200);
    }

    void ShowMax(int a, int b)
    {
        if (a>b)
            Console.WriteLine($"{a}>{b}"); // При соблюдении условия сразу выходим из метода

        if (b > a) 
            Console.WriteLine($"{b}>{a}");
    }Code language: C# (cs)

Один из примеров:

class Program
{
    static void Main()
    {
        Program program = new Program();
        program.Greet();
    }

    private void Greet()
    {
        DateTime dt = DateTime.Now;
        if (dt.Hour < 12)
            return; // До 12 часов выходим сразу без вывода текста
        Console.WriteLine("Good afternoon!");
    }
}Code language: C# (cs)

Если текущее время после двенадцати часов, выведется приветствие на полдень, иначе вывод не произойдёт, управление вернётся сразу.

Оператор return в методах void

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *