C# · Essencial · Inglês · Técnico
generics
Recurso que parametriza tipos e métodos por outros tipos, como List<T>, mantendo checagem estática e evitando casts e boxing; o CLR preserva os genéricos em tempo de execução.
Onde usar
Aparece ao criar repositórios, resultados e utilitários reutilizáveis. Diferente do Java, o .NET mantém os tipos genéricos em runtime, então typeof(List<int>) é distinto de typeof(List<string>).
Em código
T Maior<T>(T a, T b)
where T : IComparable<T>
=> a.CompareTo(b) >= 0 ? a : b;
Console.WriteLine(Maior(3, 7)); // 7
Console.WriteLine(Maior("a", "b")); // bExemplos
Make the method generic so it works for any type.
Torne o método genérico para funcionar com qualquer tipo.
Generics avoid boxing for value types.
Generics evitam boxing em value types.
Cuidado
Não confunda com o type erasure do Java: no .NET, List<int> guarda ints diretamente, sem boxing.
Sinônimos
tipos genéricos