Métodos/tipos genéricos e restrições
Escreva métodos e tipos genéricos; adicione restrições com where T : … (class, struct, new(), interface/base).
Métodos/tipos genéricos e restrições é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 1 de 3. 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 3 aulas no total.
Visão geral dos genéricos
Objetivo: Reutilize código com segurança usando genéricos.
- Métodos e tipos genéricos
- Restrições: class, struct, new(), interface/base
- Mantenha os exemplos pequenos e claros
Método genérico
Um método genérico tem uma lista de parâmetros de tipo, por exemplo, Identity<T>, e funciona com muitos tipos.
using System;
// Generic method works for any T
public class Program
{
static T Identity<T>(T value)
{
// just returns what it got
return value;
}
public static void Main(string[] args)
{
int a = Identity<int>(5);
string b = Identity<string>("hi");
Console.WriteLine(a + " & " + b);
}
}
Tipo genérico
Um tipo genérico (como Box<T>) é compilado uma vez e usado com muitos tipos concretos.
using System;
// Simple generic type to hold a value
public sealed class Box<T>
{
private T _value;
public Box(T value) { _value = value; }
public T Get() { return _value; }
public void Set(T value) { _value = value; }
}
public class Program
{
public static void Main(string[] args)
{
Box<int> bi = new Box<int>(10);
Box<string> bs = new Box<string>("ok");
Console.WriteLine(bi.Get() + " | " + bs.Get());
}
}
Restrição new()
Add where T : new() se você precisar chamar new T() dentro de código genérico.
using System;
// Factory that can create T with a parameterless ctor
public static class Factory
{
public static T Create<T>() where T : new()
{
return new T(); // allowed thanks to new() constraint
}
}
public sealed class Person
{
public string Name;
public Person() { Name = "Anon"; }
}
public class Program
{
public static void Main(string[] args)
{
Person p = Factory.Create<Person>();
Console.WriteLine(p.Name);
}
}
Restrição de interface
Restrinja T a uma interface ou classe base para poder chamar seus membros (por exemplo, IComparable<T>).
using System;
// Min for two values that can be compared
public static class Utils
{
public static T Min<T>(T a, T b) where T : IComparable<T>
{
return a.CompareTo(b) <= 0 ? a : b;
}
}
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine(Utils.Min(5, 3)); // 3
Console.WriteLine(Utils.Min("b", "a")); // a
}
}
Restrições de classe/estrutura e dicas
Outras restrições:
- where T : class → somente tipos de referência
- where T : struct → tipos de valor que não aceitam nulo
- Combine restrições: where T : class, IDisposable, new()
- Mantenha as APIs mínimas; prefira restrições de interface para obter flexibilidade.
Significado da restrição new()
Recapitulação
Recapitulação: Crie métodos/tipos genéricos e adicione restrições para usar os membros necessários: interface/base para comportamento, class/struct para o tipo e new() para chamar um construtor sem parâmetros.
Perguntas Frequentes
A aula “Métodos/tipos genéricos e restrições” é grátis?
Sim — o texto completo de “Métodos/tipos genéricos e restrições” é 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 3 aulas no total.
O que vou aprender em “Métodos/tipos genéricos e restrições”?
Escreva métodos e tipos genéricos; adicione restrições com where T : … (class, struct, new(), interface/base). 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 3.
Quanto tempo leva a aula “Métodos/tipos genéricos e restrições”?
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
- Métodos/tipos genéricos e restrições
- Variância (in/out) com interfaces e delegados
- Tipos de referência anuláveis (conscientização) e anotações (padrões do C# 6)