Translate

segunda-feira, 26 de novembro de 2012

Sobrecarga de Métodos

Assim como outras linguagens de programação modernas, C# permite que um método seja sobrecarregado. Basicamente, quando você define dois ou mais métodos com o mesmo nome e diferindo apenas pelo número (ou tipo) de parâmetros, o método em questão é dito ser sobrecarregado.
Métodos sobrecarregados são bastante úteis quando você deseja criar métodos que realizam operações semelhantes, porém sobre parâmetros de tipos diferentes ou em um número diferente de parâmetros.
Por exemplo, suponha que você precise criar métodos para somar os valores de seus parâmetros. Sem o uso de sobrecarga de métodos você teria que criar um método diferente para cada uma das operações, mesmo apesar delas fazerem praticamente a mesma coisa:

// Métodos sem sobrecarga se tornam repetitivos.
static int SomarInts(int x, int y)
{
  return x + y;
}

static int SomarDoubles(double x, double y)
{
  return x + y;
}

static int SomarLongs(long x, long y)
{
  return x + y;
}

Perceba que cada um desses métodos faz exatamente a mesma coisa: soma o valor de seus parâmetros e retorna a soma como resultado. Mesmo apesar disso, nós acabamos ficando com três métodos com nomes diferentes para a realização de uma mesma tarefa. O programador teria que se lembrar exatamente qual método toma quais parâmetros, para assim usar o método correto para realizar a operação básica de somar os valores desses parâmetros.
Com o uso de sobrecarga de métodos você é capaz de chamar um único método chamado Somar(), onde cada versão do método irá receber um conjunto diferente de argumentos. Veja como ficaria nosso método Somar() utilizando sobrecarga de métodos:

static int Somar(int x, int y)
{
  return x + y;
}


static double Somar(double x, double y)
{
  return x + y;
}


static long Somar(long x, long y)
{
  return x + y;
}

Temos agora um único método: Somar(), com três versões ou overloads, o qual pode ser chamado independente dos parâmetros serem int, double ou long. O compilador se encarregará de determinar a versão correta do método de acordo com os tipos e número de parâmetros fornecidos.



static void Main(string[] args)
{
  Console.WriteLine("***** Sobrecarga de Métodos *****\n");

  // Chama a versão int de Somar().
  Console.WriteLine(Somar(10, 10));

  // Chama a versão double de Somar().
  Console.WriteLine(Somar(3.5, 7.4));

  // Chama a versão long de Somar();
  Console.WriteLine(Somar(8000000000000, 7000000000000));
  
  Console.ReadLine();
}


Nenhum comentário:

Postar um comentário