This article is currently in the process of being translated into Portuguese (~99% done).
Methods (functions)
Enquanto propriedades e campos podem ser considerados partes passivas de uma classe, métodos são ativos. Eles desempenharão uma ou várias ações e, opcionalmente, retornarão um resultado. Em outras linguagens de programação eles são, às vezes, referidos como functions (funções) ou até "funcs", porém, no C#, quando pertencem a uma classe, são chamados de métodos. Métodos são bem úteis, pois te dão a possibilidade de encapsular um pedaço de funcionalidade em um método, o qual você pode, então, chamar novamente por vários lugares.
Um método é definido desta forma:
<visibility> <return type> <name>(<parameters>)
{
<method code>
}
Aqui está um exemplo muito básico:
public int AddNumbers(int number1, int number2)
{
return number1 + number2;
}
Este método muito básico adicionará dois números e retornará o resultado. Vamos percorrer as várias partes dele:
- public diz respeito à visibilidade (veremos isso em detalhes mais para a frente)
- int se refere ao retorno. Se não quiser que o método retorne algo use a palavra-chave void no lugar.
- AddNumbers é o nome do método.
- (int number1, int number2) - Estes são os parâmetros (veremos mais sobre depois). Parâmetros são opcionais, então você pode não colocar nada entre eles, entretanto, os parênteses em si são obrigatórios.
- Dentro do método (entre as chaves), você encontra o código a ser executado pelo método. Ele pode ocupar múltiplas linhas.
Para chamar um método, apenas escreva o nome, seguido de parênteses. Dentro destes pode-se inserir um conjunto de parâmetros (caso exista algum). Desta forma:
AddNumbers(3, 39);
Como métodos são definidos em classes, você pode querer chamar um método específico de outra classe que não a classe onde ele se localiza. Se acontecer, você deve acrescentar o nome do objeto, (ou classe, caso seja um método estático) como prefixo. Abaixo está um exemplo onde nós chamamos o método AddNumbers() enquanto ele está efetivamente localizado em outra classe, chamada MathHelper();
public void DoMath()
{
MathHelper mathHelper = new MathHelper();
int result = mathHelper.AddNumbers(4, 38);
Console.WriteLine(result);
}
Tipos de retornos (return) dos métodos (method)
Vamos falar mais sobre tipos de retorno. Nos exemplos acima, definimos um método que retornava um número inteiro (integer), mas você está livre para definir qualquer outro tipo de retorno entre os tipos de dados C#. Você pode até mesmo declarar um método que não retorne nada, como vimos com nosso método DoMath() acima. Note que eu substituí int pela palavra chave void, que significa que se espera que este método não retorne nada. Em algumas linguagens de programação, funções sem declaração de retorno são chamadas de procedurais mas em C#, elas são sempre chamadas de métodos.
Você precisa saber que, quando se declara que o método terá um retorno, você DEVE fazê-lo retornar alguma coisa, caso contrário o compilador irá reclamar imediatamente:
public int AddNumbers(int number1, int number2)
{
Console.WriteLine(number1 + number2);
}
Compiler error: AddNumbers(int, int)': not all code paths return a value
Isso significa que você precisa de um (ou vários) 'returns' dentro do seu método caso haja uma declaração de retorno. Você pode precisar de mais de um 'return' em situações em que existam múltiplos "caminhos" para o código. Como no exemplo abaixo:
public int AddLargeNumbers(int number1, int number2)
{
if((number1 > 1000) && (number2 > 1000))
{
return number1 + number2;
}
return 0;
}
Neste caso, precisamos da segunda declaração 'return', porque, se a omitíssemos, o compilador reclamaria, dizendo que a nossa declaração condicional poderia bloquear a execução da primeira declaração 'return'.
Resumo
Métodos permitem encapsular e reutilizar funcionalidades de diversas partes. Ao fornecer parâmetros diferentes para um método, você pode obter resultados diferentes. Nós utilizamos alguns parâmetros nos exemplos acima, mas no próximo artigo vamos nos aprofundar ainda mais nos parâmetros para métodos.