Sobes.tech
Junior

Em que consiste a essência dos métodos de extensão?

sobes.tech IA

Resposta da IA

Os métodos de extensão permitem adicionar novos métodos a tipos existentes sem alterar o seu código fonte ou criar um novo tipo derivado.

A essência é a seguinte:

  • São declarados como métodos estáticos numa classe estática.
  • O primeiro parâmetro do método de extensão tem a palavra-chave this antes do seu tipo. Este parâmetro indica o tipo que está a ser estendido.
  • São chamados como se fossem instâncias de métodos do tipo estendido.

Exemplo:

// Classe estática para métodos de extensão
public static class StringExtensions
{
    // Método de extensão para o tipo string
    public static string Truncate(this string input, int maxLength)
    {
        if (string.IsNullOrEmpty(input))
        {
            return input;
        }
        return input.Length <= maxLength ? input : input.Substring(0, maxLength) + "...";
    }
}

// Uso do método de extensão
string myString = "This is a long string.";
string truncatedString = myString.Truncate(10); // Chamado como método de instância

// Equivale a chamar diretamente o método estático
string truncatedStringDirect = StringExtensions.Truncate(myString, 10);

Vantagens:

  • Melhoram a legibilidade do código, permitindo usar a "sintaxe de ponto" em objetos.
  • Permitem adicionar funcionalidades a classes seladas ou tipos de bibliotecas externas sem alterar o código fonte.
  • Facilitam a escrita de consultas LINQ, pois muitos métodos LINQ são implementados como métodos de extensão.