Genéricos C#

Resumo : neste tutorial, você aprenderá sobre genéricos do C# e como definir um método genérico que funcione com qualquer tipo.

Introdução aos genéricos C#

Os genéricos C# permitem escrever código que funciona com mais de um tipo. Usando genéricos, você pode escrever código com espaços reservados para tipos e, em seguida, fornecer os tipos reais ao usar o código.

Suponha que você precise escrever um método que troque os valores de duas variáveis ​​inteiras . Para fazer isso, você pode definir um método chamado SwapInt()que aceite dois parâmetros inteiros como este:

static void SwapInt(ref int a, ref int b)
{
    int temp = a;
        a = b;
        b = temp;
}Linguagem de código:  C#  ( cs )

Posteriormente, você deseja trocar os valores de duas variáveis ​​de string . Neste caso, você precisa definir um novo método que troque as strings:

static void SwapString(ref string a, ref string b)
{
    string temp = a;
           a = b;
           b = temp;
}Linguagem de código:  C#  ( cs )

Ambos os métodos SwapInt()e SwapString()têm a mesma lógica, exceto pelos tipos de variáveis ​​com as quais lidam.

Imagine que você precisa trocar valores de duas variáveis ​​de um novo tipo, por exemplo, float , você precisa definir um novo método para cada novo tipo. Como resultado, você terá muitos Swap*métodos com a mesma lógica.

Para resolver isso, você pode criar um método genérico que troque valores de variáveis ​​de qualquer tipo como este:

static void Swap<T>(ref T a, ref T b)
{
    T temp = a;
      a = b;
      b = temp;
}Linguagem de código:  C#  ( cs )

Neste Swap()método, em vez de usar um tipo específico, usamos o espaço reservado T para o tipo.

Observe que o nome do espaço reservado Té uma convenção da comunidade. Isso significa que você pode usar qualquer string como A, B, TYPE, etc.

Ao usar o Swap()método, você pode especificar o tipo específico. Por exemplo:

int x = 10, y = 20;

Swap<int>(ref x, ref y);Linguagem de código:  C#  ( cs )

Neste exemplo, especificamos o inttipo entre colchetes angulares ( <>) que segue o nome do método. Como os tipos de xe ysão int, você pode tornar a chamada do método curta assim:

int x = 10, y = 20;

Swap(ref x, ref y);Linguagem de código:  C#  ( cs )

O programa a seguir ilustra como usar o Swap()método genérico e o utiliza para trocar valores de dois números inteiros e duas variáveis ​​de string:

class Program
{
    static void Swap<T>(ref T a, ref T b)
    {
        T temp = a;
        a = b;
        b = temp;
    }

    public static void Main(string[] args)
    {
        // swap integers
        int x = 10, y = 20;

        Console.WriteLine($"Before swapping: x={x},y={y}");
        Swap(ref x, ref y);
        Console.WriteLine($"After swapping: x={x},y={y}");
        
        // swap strings

        string s1 = "hello", s2 = "goodbye";

        Console.WriteLine($"Before swapping: s1={s1},s2={s2}");
        Swap(ref s1, ref s2);
        Console.WriteLine($"After swapping: s1={s1},s2={s2}");
    }
}Linguagem de código:  C#  ( cs )

Saída:

Before swapping: x=10,y=20
After swapping: x=20,y=10
Before swapping: s1=hello,s2=goodbye
After swapping: s1=goodbye,s2=helloLinguagem de código:  texto simples  ( texto simples )

C# permite que você use genéricos com o seguinte:

Na prática, você descobrirá que os genéricos são amplamente usados ​​em tipos de coleção como List<T>, Stack<T>, Queue<T>, etc. Eles são chamados de tipos de coleção genéricos .

Resumo

  • Os genéricos do C# permitem que você escreva código de uso geral que usa o mesmo tipo em vários locais sem conhecer esse tipo antecipadamente.
  • Use genéricos C# para escrever código reutilizável e de tipo neutro.

Deixe um comentário

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