Um método é um bloco de código com nome. Você pode executar esse bloco chamando o nome do método em outras partes do programa, enviar dados para o método e receber os valores retornados por ele.
Estrutura de um método
Como mencionado anteriormente, um método é um membro de função de uma classe.
Um método é basicamente uma função. Chamamos de método quando a função pertence a uma classe. Na linguagem C, todas essas construções são chamadas apenas de funções.
Um método é formado por duas partes fundamentais: cabeçalho do método (declaração do método) e corpo do método.
- Cabeçalho do método: Define todas as características do método e contém as seguintes informações:
- Se o método retorna valor; caso retorne, é preciso especificar o tipo de retorno
- Nome do método
- Tipos de dados que podem ser enviados e recebidos, além das regras de processamento de dados
- Corpo do método: Composto por uma sequência de instruções executáveis. A execução começa na primeira instrução do corpo e segue linha por linha em sequência.
Veja um exemplo
string Introduce(string name,int age)
{
string words = $"hello my name is {name},i'm {age} years old";
Console.WriteLine(words);
return words;
}Code language: C# (cs)
Cabeçalho do método: string Introduce(string name,int age)
string: Tipo de retorno, do tipo textoIntroduce: Nome do método(string name,int age): Lista de parâmetros. Essas duas entradas são variáveis que recebem o nome e a idade passados de fora e podem ser utilizadas dentro do corpo do método.

Como chamar esse método?
Esse método está na classe Program, na mesma classe do método Main. Porém o Main é um método static (estático). Métodos estáticos não conseguem chamar diretamente métodos não estáticos. Para chamar o Introduce, você precisa primeiro criar uma instância de Program e fazer a chamada por meio dessa instância.
class Program
{
static void Main()
{
Program program = new Program();
program.Introduce("John", 30);
}
string Introduce(string name,int age)
{
string words = $"hello my name is {name},i'm {age} years old";
Console.WriteLine(words);
return words;
}
}Code language: C# (cs)
Se chamar diretamente como abaixo, ocorrerá erro de compilação

A forma correta é criar uma instância de Program com new dentro da função Main e chamar o Introduce através da instância
Program program = new Program();//√
program.Introduce("John", 30);Code language: C# (cs)
Corpo do método
O corpo de um método pode conter zero ou várias instruções executáveis.
O corpo do método é um bloco de código (conjunto de instruções envolvido por chaves). Dentro do bloco de código podem estar os seguintes elementos:
- Variáveis locais
- Estruturas de controle de fluxo (laços, condicionais etc.)
- Chamadas a outros métodos
- Sub-blocos de código aninhados
- Funções locais (submétodos definidos dentro de um método) [veremos depois]
class Program
{
static void Main()
{
int age = 3; // Variável local, valor inicial 3
while (age > 0) // Estrutura de controle
{
--age;
Introduce("Tom", age); // Chamada de método
}
{
//Sub-bloco de código aninhado
}
}
static string Introduce(string name,int age)
{
string words = $"hello my name is {name},i'm {age} years old";
Console.WriteLine(words);
return words;
}
}
Code language: JavaScript (javascript)
No código acima, adicionamos a palavra static na frente de Introduce para transformá-lo em método estático. Assim é possível chamá-lo diretamente dentro do Main, sem precisar criar instância.
Variáveis Locais (Local Variables)
Assim como os campos de instância apresentados anteriormente, variáveis locais servem para guardar dados. Os campos de instância geralmente mantêm o estado do objeto, enquanto variáveis locais só armazenam dados temporários para cálculos pontuais.
Quando o método ao qual as variáveis locais pertencem termina de executar, essas variáveis são removidas da pilha. Variáveis de tipo valor são destruídas imediatamente; variáveis de tipo referência serão removidas pelo coletor de lixo em algum momento posterior.
1. Sintaxe para declarar variáveis locais
Tipo NomeVariavel = ValorInicial;
NomeVariavel: Identificador definido pelo usuário= ValorInicial: Inicializador opcional para atribuir um valor inicial à variável
2. Regras essenciais das variáveis locais
- Ciclo de vida e escopo: Existem apenas dentro do bloco onde foram declaradas e em todos os sub-blocos aninhados
- A variável é criada e passa a valer na linha onde é declarada
- Quando o bloco de código finaliza a execução, a variável é invalidada e destruída
- Posição de declaração flexível: Podem ser escritas em qualquer lugar no corpo do método, mas precisam ser declaradas antes de serem usadas
static void Main()
{
int age = 3; //Variável local
Phone p = new Phone(); //Variável local de tipo personalizado
{
int one = 1; //Variável local do sub-bloco
bool two = false;
}
double d = 0;
}Code language: JavaScript (javascript)

Campos de Instância vs Variáveis Locais
| Campo de Instância | Variável Local | |
|---|---|---|
| Ciclo de Vida | Criado no momento da instanciação do objeto; destruído quando o objeto ficar inacessível | Ativado na linha de declaração; destruído quando o bloco correspondente terminar a execução |
| Inicialização Padrão | O compilador atribui automaticamente o valor padrão do tipo | Sem inicialização automática; usar variável sem valor causa erro de compilação |
| Armazenamento em Memória | Armazenado totalmente no Heap, tanto para tipo valor quanto referência | Tipo valor: Stack; Tipo referência: referência na Stack, dados do objeto no Heap |
Método (Method)