0Pricing
C# Academy · Aula

Genéricos em C#

Aprenda como os genéricos permitem estruturas de código reutilizáveis e seguras quanto aos tipos

Genéricos em C# é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 1 de 5. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 5 aulas no total.

Introdução aos genéricos

Genéricos em C#

Boas-vindas à primeira lição sobre "Recursos avançados do C#"! Nesta lição, você aprenderá sobre genéricos, um recurso avançado do C# que permite criar código flexível e reutilizável. Vamos começar!

Genéricos em C# — ilustração 1

O que são genéricos?

O que são genéricos?

Genéricos são um recurso do C# que permite definir classes, métodos e estruturas de dados com um marcador de posição para o tipo de dados que armazenam ou usam. Os genéricos proporcionam segurança de tipos e reutilização de código.

Exemplo: uma lista genérica (List<T>) pode armazenar elementos de qualquer tipo, garantindo a segurança de tipos.

Criando classes genéricas

Criando classes genéricas

Você pode definir uma classe genérica usando a sintaxe <T>, em que T representa um parâmetro de tipo. Exemplo:

Ponto principal: use genéricos para criar classes que funcionem com qualquer tipo de dados, mantendo a segurança de tipos.

using System;

class GenericBox<T> {
    public T Value { get; set; }

    public void Display() {
        Console.WriteLine("Value: " + Value);
    }
}

class Program {
    static void Main() {
        GenericBox<int> intBox = new GenericBox<int> { Value = 42 };
        intBox.Display(); // Outputs: Value: 42

        GenericBox<string> stringBox = new GenericBox<string> { Value = "Hello, Generics!" };
        stringBox.Display(); // Outputs: Value: Hello, Generics!
    }
}

Criando métodos genéricos

Criando métodos genéricos

Você pode definir um método genérico dentro de uma classe. Exemplo:

Dica: use métodos genéricos para operações aplicáveis a vários tipos de dados.

using System;

class Program {
    static void Main() {
        PrintValue(42);
        PrintValue("Generics are powerful!");
    }

    static void PrintValue<T>(T value) {
        Console.WriteLine("Value: " + value);
    }
}

Restrições de genéricos

Restrições de genéricos

As restrições limitam os tipos que podem ser usados como parâmetros de tipo. Exemplo:

  • where T : struct - T deve ser um tipo de valor.
  • where T : class - T deve ser um tipo de referência.
  • where T : new() - T deve ter um construtor sem parâmetros.

Exemplo:

Ponto principal: as restrições tornam os genéricos mais flexíveis e aplicáveis a cenários específicos.

using System;

class Program {
    static void Main() {
        DisplayDefault<int>();
        DisplayDefault<string>();
    }

    static void DisplayDefault<T>() where T : new() {
        T instance = new T();
        Console.WriteLine("Created instance of: " + typeof(T));
    }
}

Coleções genéricas

Coleções genéricas

O C# fornece várias coleções genéricas integradas:

  • List<T>: armazena uma coleção de elementos em um vetor dinâmico.
  • Dictionary<TKey, TValue>: armazena pares chave-valor para consultas rápidas.
  • Queue<T>: implementa uma estrutura Primeiro a Entrar, Primeiro a Sair (FIFO).

Exemplo: usando uma lista genérica:

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
        names.Add("Diana");

        foreach (string name in names) {
            Console.WriteLine(name);
        }
    }
}

Desafio prático

Desafio prático

Crie uma classe genérica Pair<TKey, TValue> que armazene um par chave-valor e um método genérico Swap() que troque a chave e o valor. Exemplo:

using System;

class Pair<TKey, TValue> {
    public TKey Key { get; set; }
    public TValue Value { get; set; }

    public void Swap() {
        (Key, Value) = ((TKey)(object)Value, (TValue)(object)Key);
    }

    public void Display() {
        Console.WriteLine($"Key: {Key}, Value: {Value}");
    }
}

class Program {
    static void Main() {
        Pair<string, int> pair = new Pair<string, int> { Key = "Age", Value = 30 };
        pair.Display();
        pair.Swap();
        pair.Display();
    }
}

Práticas recomendadas para usar genéricos

Práticas recomendadas para usar genéricos

Estas são algumas práticas recomendadas:

  • Use genéricos para criar classes e métodos reutilizáveis e seguros quanto aos tipos.
  • Aplique restrições quando forem necessários requisitos específicos de tipo.
  • Prefira coleções genéricas a coleções não genéricas para obter mais desempenho e segurança.

Dica: use nomes significativos para os parâmetros de tipo, como T para tipo ou TKey e TValue para pares chave-valor.

Ótimo trabalho!

Ótimo trabalho!

Parabéns! Você aprendeu a usar genéricos para criar código reutilizável e flexível em C#. Na próxima lição, exploraremos a programação assíncrona com async e await. Vamos continuar programando!

Genéricos em C# — ilustração 10

Perguntas Frequentes

A aula “Genéricos em C#” é grátis?

Sim — o texto completo de “Genéricos em C#” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 5 aulas no total.

O que vou aprender em “Genéricos em C#”?

Aprenda como os genéricos permitem estruturas de código reutilizáveis e seguras quanto aos tipos Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C# Academy?

Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 5.

Quanto tempo leva a aula “Genéricos em C#”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C# Academy?

Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Genéricos em C#
  2. Async e Await: trabalhando com código assíncrono
  3. Entendendo encadeamentos e tarefas
  4. Explorando delegados e lambdas
  5. Entendendo a reflexão em C#
← Voltar para C# Academy