C# – Extension Methods2 min de leitura

Categoria: C# Programação Orientada a Objetos

Olá pessoal! Hoje veremos um recurso muito interessante que foi adicionado no C# 3.0, que é o recurso Extension Method. Com este recurso você irá “aposentar” suas classes Helper. Mas, o que é exatamente um Extension Method e como este recurso poderá ajudar no desenvolvimento de software?

Extension Methods em poucas palavras…

Basicamente com Extension Method você poderá adicionar métodos em objetos compilados. Você alguma vez utilizou o método .ToString() da classe Integer? Pois é, você poderá criar seus métodos de extensão, como por exemplo, um ToDouble(), dentro de uma instância da classe Integer!Com Extencion Method, você poderá estender as funcionalidades de qualquer classe já compilada! Acredite! Como mencionei no início, este é um recurso disponível a partir do C# 3.0 (.NET Framework 3.5 ou superior) .

Um exemplo de Extension Method

Mostrarei um exemplo simples, adicionando um método na classe Integer, mas isso pode ser feito em qualquer classe já compilado, a exemplo: double, string, float, entre outras. No nosso exemplo, vou adicionar um método para verificar se o número inteiro é par. Primeiro vejamos a classe, como fica:

public static class MyExtensionMethod
{
   // Teste se um número inteiro é par
   public static bool Par(this int value)
   {
     return (value%2 == 0);
   }
}

Observe que no parâmetro da classe eu uso a palavra reservada this. Para o primeiro parâmetro, ele irá capturar o valor da instância e fazer o que o método se propõe a fazer. Imaginando que você precise de mais um parâmetro, bastaria adicionar o parâmetro, sem a necessidade da palavra reservada this. Uma observação importante: para o recurso funcionar tanto a classe, quanto o(s) método(s) DEVEM ser declarado como “static (estático)!”Voltando ao nosso exemplo, para invocar este método basta declara uma variável int e chamar o método:

var num = 10;
bool esteNumeroEPar;
esteNumeroEPar = num.Par()

Se for par, retorno será true, do contrário, false. Este é um recurso muito bacana que pode tornar seu código mais organizado. Em breve estarei com mais novidades! Até a próxima!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.