Classes genéricas C#

Resumo : neste tutorial, você aprenderá como usar genéricos C# para definir classes reutilizáveis ​​e de tipo neutro.

Introdução às classes genéricas C#

O exemplo a seguir mostra a Stackclasse que permite colocar uma string em uma pilha ou retirar o elemento superior dela:

namespace CSharpTutorial;

class Stack
{
    int current = -1;

    string[] items;

    public Stack(int size)
    {
        items = new string[size];
    }

    public bool Empty => current == -1;

    public bool Full => current == items.Length - 1;

    public bool Push(string item)
    {
        if (!Full)
        {
            items[++current] = item;
            return true;
        }
        return false;
    }

    public string? Pop() => !Empty ? items[current--] : null;

}Linguagem de código:  C#  ( cs )

A Stackclasse funciona bem com strings. Mas se você quiser ter uma pilha de outros tipos como inteiro , float ou objetos, será necessário criar uma classe para cada tipo.

Para tornar a Stackclasse mais genérica e reutilizável, você pode usar genéricos C# para definir uma classe genérica. O seguinte define uma classe genérica Stackque funciona com qualquer tipo.

namespace CSharpTutorial;

class Stack<T>
{
    int current = -1;

    T[] items;

    public Stack(int size)
    {
        items = new T[size];
    }

    public bool Empty => current == -1;

    public bool Full => current == items.Length - 1;

    public bool Push(T item)
    {
        if (!Full)
        {
            items[++current] = item;
            return true;
        }
        return false;
    }

    public T? Pop() => !Empty ? items[current--] : default(T);

}Linguagem de código:  C#  ( cs )

Como funciona.

Primeiro, especifique o tipo ( T) entre colchetes angulares <>que segue o nome da classe:

class Stack<T>Linguagem de código:  C#  ( cs )

Segundo, use o tipo ( T) para o itemsmembro:

T[] items;Linguagem de código:  C#  ( cs )

Terceiro, use o tipo ( T) nos métodos construtor, pop e push.

A seguir mostramos como usar a Stack<T>classe:


class Program
{
    public static void Main(string[] args)
    {
        var colors = new Stack<string>(3);

        colors.Push("Red");
        colors.Push("Green");
        colors.Push("Blue");

        while (true)
        {
            var color = colors.Pop();

            if (color == null)
            {
                break;
            }

            Console.WriteLine(color);
        }

    }

}Linguagem de código:  C#  ( cs )

Como funciona.

Primeiro, crie uma nova instância de Stacke especifique the stringcomo o tipo:

var colors = new Stack<string>(3);Linguagem de código:  C#  ( cs )

Segundo, chame o Push()método três vezes para colocar as strings Red, Greene Bluena pilha:

colors.Push("Red");
colors.Push("Green");
colors.Push("Blue");Linguagem de código:  C#  ( cs )

Terceiro, retire a string da pilha até que esteja vazia chamando o Pop()método:

while (true)
{
    var color = colors.Pop();

    if (color == null)
    {
        break;
    }

    Console.WriteLine(color);
}Linguagem de código:  C#  ( cs )

Resumo

  • Use a classe genérica C# para construir classes reutilizáveis ​​e de tipo neutro.

Deixe um comentário

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