Métodos de extensão C#

Resumo : neste tutorial, você aprenderá sobre os métodos de extensão C# e como usá-los para estender qualquer tipo com métodos adicionais.

Introdução aos métodos de extensão C#

Para adicionar um método a uma classe , geralmente criamos uma subclasse da classe existente e adicionamos o método à classe derivada.

C# introduziu um novo recurso chamado métodos de extensão que permite adicionar novos métodos a um tipo (ou classe) existente sem a necessidade de usar herança .

Um método de extensão é um método estático , mas é chamado como se fosse um método de instância no tipo estendido.

Criando métodos de extensão C#

Para criar um método de extensão, você define uma classe estática que contém o método de extensão. Por exemplo, o seguinte cria um método de extensão no stringtipo:

using System.Globalization;

static class StringExtensions
{
    public static string ToTitleCase(this string value)
    {
        return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(value);
    }
}Linguagem de código:  JavaScript  ( javascript )

Como funciona.

  • Primeiro, defina a classe estática chamada StringExtensions.
  • Segundo, defina o método de extensão ToTitleCase()como um método estático da StringExtensionsclasse. O método de extensão usa thispalavra-chave antes do primeiro parâmetro. Neste exemplo, o ToTitleCase()método usa as informações de texto da cultura atual para converter uma string em maiúsculas e minúsculas.

Usando métodos de extensão C#

O programa a seguir demonstra como chamar o ToTitleCase()método de extensão em uma string:

using System.Globalization;

static class StringExtensions
{
    public static string ToTitleCase(this string value)
    {
        return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(value);
    }
}

class Program
{
    public static void Main(string[] args)
    {
        var message = "C# extension methods are cool";
        var result = message.ToTitleCase();

        Console.WriteLine(result);
    }
}Linguagem de código:  JavaScript  ( javascript )

Saída:

C# Extension Methods Are CoolLinguagem de código:  PHP  ( php )

Um exemplo mais prático do método de extensão C#

O exemplo a seguir demonstra como usar métodos de extensão para estender o tipo int adicionando dois métodos IsEven()e IsOdd():

static class IntExtensions
{
    public static bool IsEven(this int value)
    {
        return value % 2 == 0;
    }
    public static bool IsOdd(this int value)
    {
        return !IsEven(value);
    }
}

class Program
{
    public static void Main(string[] args)
    {
        int[] numbers = { 3, 5, 6, 2, 7, 8 };

        foreach (var number in numbers)
        {
            if (number.IsEven())
            {
                Console.WriteLine(number);
            }
        }

    }
}Linguagem de código:  PHP  ( php )

Saída:

6
2
8

Neste exemplo, o IsEven()método retorna truese o número for par e falsecaso contrário. O IsOdd()método é o inverso do IsEven()método.

No Main()método da Programclasse, definimos uma lista de inteiros, iteramos sobre seus elementos usando foreach e escrevemos o número par no console. Usamos o IsEven()método de extensão para verificar se um número é par ou não.

Vantagens dos métodos de extensão C#

Os métodos de extensão têm as seguintes vantagens:

  • Permite adicionar funcionalidade aos tipos que você não controla, como classes .NET, sem a necessidade de subclassificá-los.
  • Torne seu código mais limpo e legível, mantendo os métodos relacionados em um só lugar.
  • Melhor descoberta: ao trabalhar com um objeto, você pode encontrar todos os seus métodos de extensão por meio do IntelliSense.

A imagem a seguir mostra os métodos de extensão disponíveis ( IsEven& IsOdd) do tipo inteiro que definimos no exemplo anterior:

Resumo

  • Os métodos de extensão C# permitem estender um tipo existente sem usar herança.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *