return dentro de métodos void

Comentamos brevemente sobre isso na aula anterior: mesmo métodos com tipo de retorno void podem conter a instrução return.

Métodos que retornam valor exigem a instrução return;

Métodos void sem valor de retorno não são obrigados a usar return:

Quando a execução chega até a chave de fechamento } do método, ele retorna automaticamente para quem o chamou, sem enviar nenhum dado.

Mas no desenvolvimento prático frequentemente precisamos interromper um método antecipadamente. Métodos void podem usar return; sem parâmetros para sair imediatamente:

Sintaxe: return; (sem expressão após)

Restrição: só pode ser utilizado dentro de métodos declarados como void

Exemplo:

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

Este é um exemplo que vimos antes, um método void simples sem necessidade de return no interior.

Ao chamá-lo, ele executa Writeline e exibe “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)

Agora vamos adicionar return;

    void SayHi()
    {
        return; // A instrução return usada isoladamente encerra a execução do método atual
        Console.WriteLine("hello welcome to foxdevelop.com");
    }Code language: C# (cs)

A execução não produz nenhuma saída. Como return; está acima do Console.WriteLine, assim que o return for executado o fluxo volta para o chamador e o código subsequente não roda. Isso corresponde a uma saída antecipada.

Todo código depois disso nunca será executado.

Portanto, mesmo métodos void aceitam o uso de return;, basta não informar nenhum valor após o return.

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

Métodos que não são void precisam usar return valor;

Depois de return deve haver obrigatoriamente um resultado: pode ser uma variável, um literal (valores como 100, 3.14) ou uma expressão como a+b. Em suma, é preciso retornar algum resultado.

Se omitir o resultado e escrever apenas return; como nos métodos void, ocorrerá um erro.

Múltiplos pontos de saída com return em métodos 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}"); // Sai diretamente do método quando a condição for atendida

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

Um exemplo:

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

    private void Greet()
    {
        DateTime dt = DateTime.Now;
        if (dt.Hour < 12)
            return; // Sai antes das 12 horas sem imprimir nada
        Console.WriteLine("Good afternoon!");
    }
}Code language: C# (cs)

Se o horário atual for depois das doze, ele exibe a saudação da tarde; caso contrário, não mostra nada e retorna imediatamente.

return dentro de métodos void

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *