Métodos no C#
O que é um Método
Section titled “O que é um Método”Um método em C# é um bloco de código que executa uma tarefa específica.
Ele pode receber parâmetros, retornar valores e ser chamado por outras partes do programa.
Métodos são definidos dentro de classes ou structs e podem ser estáticos, de instância, genéricos, assíncronos, entre outros.
Métodos de instância
Section titled “Métodos de instância”Documentação Oficial: Visão geral dos métodos
São métodos que operam sobre uma instância da classe. Requerem que um objeto seja criado para serem chamados.
public class Calculadora { public int Somar(int a, int b) { return a + b; }}
var calc = new Calculadora();int resultado = calc.Somar(2, 3); // Output: 5Métodos Estáticos
Section titled “Métodos Estáticos”Documentação oficial: Classes Estáticas e Membros estáticos
Pertencem à classe e não à instância. São chamados diretamente pela classe.
public class Util { public static int Dobrar(int x) { return x * 2; }}
int resultado = Util.Dobrar(4); // Output: 8Métodos com retorno
Section titled “Métodos com retorno”Documentação Oficial: Criar método que retornam valores
Retornam um valor após a execução. O tipo de retorno é especificado na assinatura.
public string Saudacao(string nome) { return $"Olá, {nome}!";}Métodos com parâmetro opcional
Section titled “Métodos com parâmetro opcional”Documentação Oficial: Argumentos opcionais
Permitem definir valores padrão para parâmetros.
public void MostrarMensagem(string msg = "Mensagem padrão") { Console.WriteLine(msg);}
MostrarMensagem(); // Output: Mensagem padrãoMostrarMensagem("Olá!"); // Output: Olá!Métodos com params
Section titled “Métodos com params”Documentação Oficial: Métodos com parâmetros
Permitem passar um número variável de argumentos como array.
public int Somar(params int[] numeros) { return numeros.Sum();}
Somar(1, 2, 3, 4); // Output: 10Métodos com ref e out
Section titled “Métodos com ref e out”Documentação Oficial: ref e out
Permitem passar variáveis por referência.
ref: variável deve ser inicializada antes.
out: variável será inicializada dentro do método.
public void Dobrar(ref int valor) { valor *= 2;}
public void GerarNumero(out int numero) { numero = 42;}Método genérico
Section titled “Método genérico”Documentação Oficial: Método genérico
Permite trabalhar com tipos parametrizados.
public T RetornarValor<T>(T valor) { return valor;}
int x = RetornarValor<int>(10); // Output: 10string s = RetornarValor<string>("teste"); // Output: testeMétodo Assíncrono (async)
Section titled “Método Assíncrono (async)”Documentação Oficial: Método Assíncrono
Executa operações assíncronas com await.
public async Task<string> BuscarDadosAsync() { await Task.Delay(1000); return "Dados recebidos";}Métodos lambda (Função Anônima)
Section titled “Métodos lambda (Função Anônima)”Documentação Oficial: Expressões Lambda
Funções inline que podem ser atribuídas a delegates ou usadas em LINQ.
Func<int, int> quadrado = x => x * x;Console.WriteLine(quadrado(5)); // Output: 25Método de extensão
Section titled “Método de extensão”Documentação Oficial: Métodos de Extensão
Permite adicionar métodos a tipos existentes sem modificar o código original.
public static class Extensoes { public static int Dobrar(this int valor) { return valor * 2; }}
int resultado = 5.Dobrar(); // Output: 10