Pular para o conteúdo
.NETMétodos e parâmetros
Módulo 01Fundamentos da Plataforma e da Linguagem

Métodos e parâmetros

iniciante 25 min de leitura·Atualizado · .NET 9
Resumo

Métodos encapsulam comportamento reutilizável. Eles recebem parâmetros, retornam valores e podem ter sobrecargas, parâmetros opcionais e nomeados.

1. Objetivos de Aprendizagem#

  • Declarar métodos com parâmetros e retorno.
  • Usar parâmetros opcionais, nomeados e out.
  • Entender sobrecarga (overload) e corpos de expressão.

2. Pré-requisitos#

  • Controle de fluxo (tópico 3.2).

3. Conceito#

Um método tem assinatura: modificadores + tipo de retorno + nome + parâmetros. O porquê: dar nome a um comportamento, evitar repetição e testar unidades pequenas.

Recursos úteis:

  • Parâmetros opcionais: valor padrão na assinatura.
  • Argumentos nomeados: metodo(preco: 10) melhora legibilidade.
  • out / ref: retornar múltiplos valores ou passar por referência.
  • Sobrecarga: mesmo nome, assinaturas diferentes.
  • Expression-bodied: => para métodos de uma linha.

4. Mão na Massa#

4.1. Setup#

Shell
dotnet new console -n Catalog.Metodos
cd Catalog.Metodos

4.2. Implementação Passo a Passo#

  1. Método simples e expression-bodied:
C#
decimal ComImposto(decimal valor, decimal aliquota = 0.1m)
    => valor + (valor * aliquota);

Console.WriteLine(ComImposto(100m));            // 110
Console.WriteLine(ComImposto(100m, 0.2m));      // 120
Console.WriteLine(ComImposto(valor: 50m));      // argumento nomeado
  1. Sobrecarga:
C#
string Formatar(int n) => $"inteiro: {n}";
string Formatar(decimal n) => $"decimal: {n:C}";
  1. out para múltiplos retornos:
C#
bool TentarDividir(int a, int b, out int resultado)
{
    if (b == 0) { resultado = 0; return false; }
    resultado = a / b;
    return true;
}

if (TentarDividir(10, 2, out int r))
    Console.WriteLine(r); // 5

4.3. Executando#

Shell
dotnet run

5. Exemplo Completo#

C#
decimal PrecoFinal(decimal preco, decimal desconto = 0m, decimal imposto = 0.1m)
    => (preco - desconto) * (1 + imposto);

Console.WriteLine(PrecoFinal(200m, desconto: 20m)); // usa imposto padrão

6. Boas Práticas e Armadilhas#

FaçaEvite
Métodos curtos, com um propósito claroMétodos gigantes que fazem "tudo"
Argumentos nomeados para clareza em chamadas ambíguasLongas listas de bool posicionais
Usar o padrão Try...(out ...) para operações que podem falharAbusar de ref/out sem necessidade
Atenção

parâmetros opcionais são resolvidos em tempo de compilação. Mudar um valor padrão em uma biblioteca não afeta chamadores já compilados até que eles recompilem.

7. Segurança e Produção#

  • Métodos pequenos e nomeados são mais fáceis de testar e revisar — base para código sustentável.

8. Exercícios#

  • Fácil: escreva um método que retorne o maior de dois números.
  • Médio: crie duas sobrecargas de um método Descrever.
  • Desafio: implemente TryParsePreco(string, out decimal) que valida um preço.

9. Resumo#

Métodos encapsulam comportamento com parâmetros e retorno; use opcionais/nomeados para clareza, out para múltiplos retornos e sobrecarga para variações. Prefira métodos curtos.

10. Próximos Passos#

Encerramos a sintaxe base. A seguir, a distinção fundamental entre value e reference types.

11. Referências#

03-03 — Métodos e parâmetros | Curso ASP.NET Core