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