C#: Noções básicas sobre métodos

1. O que é um método

Um método é um bloco de código que executa uma tarefa específica. Encapsular lógica repetitiva em métodos melhora a reutilização e a legibilidade do código.

Em C#, os métodos devem ser definidos dentro de uma classe ou estrutura, ao contrário das funções independentes em C. Ao usar instruções de nível superior, é possível definir funções locais.


2. Definição e chamada de métodos

(1) Sintaxe

TEXT 📖 Somente leitura
access_modifier return_type method_name(parameter_list)
{
    method_body
}

▶ Exemplo

CSHARP
using System;

class Program
{
    static void SayHello()
    {
        Console.WriteLine("Hello, World!");
    }

    static void Main()
    {
        SayHello();
        SayHello();
    }
}
▶ Experimente
TEXT 📖 Somente leitura
Hello, World!
Hello, World!
💡 Para chamar um método, use o formato method_name(arguments). Um método precisa ser definido apenas uma vez e pode ser chamado várias vezes.


3. Parâmetros e valores de retorno

(1) Métodos com parâmetros

Os parâmetros permitem que um método receba dados externos, possibilitando que ele processe diferentes entradas.

▶ Exemplo

CSHARP
using System;

class Program
{
    static void Greet(string name)
    {
        Console.WriteLine("Hello, " + name + "!");
    }

    static void Main()
    {
        Greet("Alice");
        Greet("Bob");
    }
}
▶ Experimente
TEXT 📖 Somente leitura
Hello, Alice!
Hello, Bob!

(2) Métodos com valores de retorno

Os valores de retorno permitem que um método retorne os resultados dos cálculos ao chamador.

▶ Exemplo

CSHARP
using System;

class Program
{
    static int Add(int a, int b)
    {
        return a + b;
    }

    static void Main()
    {
        int result = Add(3, 5);
        Console.WriteLine("3 + 5 = " + result);
        Console.WriteLine("10 + 20 = " + Add(10, 20));
    }
}
▶ Experimente
TEXT 📖 Somente leitura
3 + 5 = 8
10 + 20 = 30

4. Parâmetros formais e reais

Conceito Descrição Exemplo
Parâmetro formal Parâmetros na definição do método a, b em static int Add(int a, int b)
Parâmetro real Valores passados ao chamar o método 3, 5 em Add(3, 5)
⚠️ Os parâmetros formais são declarações de variáveis; os parâmetros reais são valores ou expressões específicas. Quando um método é chamado, os valores dos parâmetros reais são passados para os parâmetros formais correspondentes.


5. A instrução return

A instrução return tem dois objetivos:

  1. Retornar um resultado ao chamador
  2. Sair imediatamente do método — o código subsequente não é executado

▶ Exemplo

CSHARP
using System;

class Program
{
    static string GetGrade(int score)
    {
        if (score >= 90)
            return "Excellent";
        if (score >= 60)
            return "Pass";
        return "Fail";
    }

    static int Max(int a, int b)
    {
        if (a > b)
            return a;
        else
            return b;
    }

    static void Main()
    {
        Console.WriteLine(GetGrade(95));
        Console.WriteLine(GetGrade(70));
        Console.WriteLine(GetGrade(45));
        Console.WriteLine("Larger: " + Max(12, 8));
    }
}
▶ Experimente
TEXT 📖 Somente leitura
Excellent
Pass
Fail
Larger: 12
⚠️ Assim que return for executado, o método será encerrado imediatamente. Em métodos que não sejam do tipo void, todos os caminhos de código devem retornar um valor.


6. Métodos void

void indica que um método não possui valor de retorno. Os métodos void não exigem uma instrução return, mas é possível usar return; para encerrar a execução antecipadamente.

▶ Exemplo

CSHARP
using System;

class Program
{
    static void PrintLine(int length)
    {
        if (length <= 0)
            return;
        string line = new string('-', length);
        Console.WriteLine(line);
    }

    static void PrintInfo(string name, int age)
    {
        Console.WriteLine("Name: " + name);
        Console.WriteLine("Age: " + age);
    }

    static void Main()
    {
        PrintInfo("Alice", 18);
        PrintLine(20);
        PrintLine(-5);
    }
}
▶ Experimente
TEXT 📖 Somente leitura
Name: Alice
Age: 18
--------------------
📌 return; em um método sem retorno é usado apenas para saída antecipada e não retorna nenhum valor.


7. A pilha de chamadas de métodos

A pilha de chamadas é o mecanismo de gerenciamento de memória utilizado quando um programa executa métodos. Cada vez que um método é chamado, um quadro de pilha é inserido na pilha; quando o método retorna, o quadro é removido da pilha.

▶ Exemplo

CSHARP
using System;

class Program
{
    static int Square(int x)
    {
        return x * x;
    }

    static int SumOfSquares(int a, int b)
    {
        int sa = Square(a);
        int sb = Square(b);
        return sa + sb;
    }

    static void Main()
    {
        int result = SumOfSquares(3, 4);
        Console.WriteLine("Result: " + result);
    }
}
▶ Experimente
TEXT 📖 Somente leitura
Result: 25

O processo de chamada é o seguinte:

TEXT 📖 Somente leitura
1. Main() pushed onto stack
2.   SumOfSquares(3, 4) pushed onto stack
3.     Square(3) pushed → returns 9 → popped
4.     Square(4) pushed → returns 16 → popped
5.   SumOfSquares returns 25 → popped
6. Main → outputs 25 → popped

ℹ️ A pilha segue o princípio “último a entrar, primeiro a sair”. Quanto mais profunda for a aninhamento dos métodos, maior será o número de quadros da pilha. O espaço da pilha é limitado; a recursão excessiva pode causar um estouro de pilha.


8. Convenções de nomenclatura de métodos

A nomenclatura de métodos em C# utiliza PascalCase: a primeira letra de cada palavra é maiúscula, sem sublinhados.

Estilo Exemplo Idioma
PascalCase CalculateTotal, GetUserName C#
snake_case calculate_total, get_user_name C, Python

▶ Exemplo

CSHARP
using System;

class Program
{
    static double CalculateArea(double radius)
    {
        return 3.14159 * radius * radius;
    }

    static bool IsValidAge(int age)
    {
        return age >= 0 && age <= 150;
    }

    static void PrintUserInfo(string name, int age)
    {
        Console.WriteLine(name + ", age " + age);
    }

    static void Main()
    {
        double area = CalculateArea(5.0);
        Console.WriteLine("Area: " + area);
        Console.WriteLine("Valid age: " + IsValidAge(25));
        PrintUserInfo("Alice", 25);
    }
}
▶ Experimente
TEXT 📖 Somente leitura
Area: 78.53975
Valid age: True
Alice, age 25

✅ Os nomes dos métodos devem começar com um verbo ou uma locução verbal, como Get, Set, Calculate, Is, Print, etc.


9. Métodos com corpo de expressão

O C# 6.0 introduziu métodos com corpo de expressão, utilizando => para simplificar as definições de métodos em uma única linha.

▶ Exemplo

CSHARP
using System;

class Program
{
    static int Square(int x) => x * x;

    static double CircleArea(double r) => 3.14159 * r * r;

    static bool IsAdult(int age) => age >= 18;

    static void Main()
    {
        Console.WriteLine(Square(7));
        Console.WriteLine(CircleArea(3.0));
        Console.WriteLine(IsAdult(20));
    }
}
▶ Experimente
TEXT 📖 Somente leitura
49
28.27431
True
🚀 => é uma forma abreviada de uma expressão lambda, equivalente a { return expression; }, e se aplica apenas à lógica de uma única linha.


10. Passagem por valor

O C# utiliza a passagem por valor por padrão: os tipos de valor copiam os dados, enquanto os tipos de referência copiam a referência.

▶ Exemplo

CSHARP
using System;

class Program
{
    static void TryChange(int x)
    {
        x = 999;
    }

    static void Main()
    {
        int num = 10;
        TryChange(num);
        Console.WriteLine("num = " + num);
    }
}
▶ Experimente
TEXT 📖 Somente leitura
num = 10
⚠️ Na passagem por valor, o parâmetro formal é uma cópia do parâmetro real. Modificar o parâmetro formal dentro do método não afeta o parâmetro real.


11. Vários tipos de retorno

Os métodos podem retornar vários tipos: int, double, string, bool, etc.

▶ Exemplo

CSHARP
using System;

class Program
{
    static int GetLength(string text)
    {
        return text.Length;
    }

    static double GetAverage(int a, int b)
    {
        return (a + b) / 2.0;
    }

    static bool IsPositive(double value)
    {
        return value > 0;
    }

    static string BuildGreeting(string name)
    {
        return "Welcome, " + name + "!";
    }

    static void Main()
    {
        Console.WriteLine(GetLength("Hello"));
        Console.WriteLine(GetAverage(3, 4));
        Console.WriteLine(IsPositive(-2.5));
        Console.WriteLine(BuildGreeting("Alice"));
    }
}
▶ Experimente
TEXT 📖 Somente leitura
5
3.5
False
Welcome, Alice!

❓ Perguntas Frequentes

P: Um método pode não ter parâmetros? R: Sim, basta deixar a lista de parâmetros vazia, por exemplo, static void SayHi().

P: Um método pode ter várias instruções de retorno? R: Sim, mas em métodos que não sejam do tipo void, cada caminho de execução deve retornar um valor.

P: Um método void pode usar a instrução return? R: Sim, use return; para sair antecipadamente, mas ele não pode retornar nenhum valor.

P: Os parâmetros formais e reais precisam ter o mesmo nome? R: Não, eles são variáveis independentes e podem ter nomes diferentes.

P: Um método em C# pode existir fora de uma classe? R: Não, os métodos em C# devem estar dentro de uma classe ou estrutura, mas as funções locais podem ser definidas em instruções de nível superior.

📖 Resumo

📝 Exercícios

  1. Escreva um método static int Factorial(int n) que calcule o fatorial de n e retorne o resultado
  2. Escreva um método static bool IsEven(int num) que verifique se um número inteiro é par, utilizando a sintaxe de corpo de expressão
  3. Escreva um método static void PrintMultiplicationTable(int n) que exiba a tabuada de n (de 1×n a 9×n)
  4. Escreva um método static string ClassifyScore(int score) que retorne “Excelente”, “Bom”, “Aprovado” ou “Reprovado” com base na pontuação
  5. Escreva um método static double CalcBMI(double weight, double height) que calcule o IMC a partir do peso (kg) e da altura (m)
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%