English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
No artigo anterior, demos uma análise breve sobre o sistema de tipos no C# (tipos de valor e tipos de referência), e agora, através deste artigo, vamos apresentar os tipos genéricos do C#.
Vamos discutir sobre os genéricos no C#, usar genéricos habilmente pode melhorar a reutilização do código, usar nosso código instantaneamente se torna mais sofisticado, claro, apenas um pouco, realmente apenas um pouco, porque ainda há muitos conhecimentos a serem aprendidos e dominados. Vamos ver o próximo exemplo usando Dictionary<TKey, TValue>.
static void Main(string[] args) { Dictionary<int, string> result = GetAll(); } public static Dictionary<int, string> GetAll() { var dic = new Dictionary<int, string>(); dic.Add(1, "aaa"); dic.Add(1, "aaa"); dic.Add(1, "aaa"); return dic; }
Existem dois tipos de genéricos: tipos genéricos (classe, interface, delegado e estrutura) e métodos genéricos, como TKey e TValue são parâmetros de tipo, enquanto int e string introduzidos são tipos reais, podemos ver que os parâmetros de tipo são apenas marcadores de posição dos tipos reais. Aqueles genéricos que não fornecem parâmetros reais para os parâmetros de tipo são chamados de tipos genéricos não construídos, e se especificarem os parâmetros de tipo reais chamam-se tipos genéricos construídos, e o exemplo de tipo é o objeto que usamos. Veja o gráfico de relação a seguir.
A verificação de genéricos pode ser uma coisa que deixa a cabeça confusa, vamos explicar bem a seguir, pode não ser muito claro, faremos o nosso melhor, porque também não estou muito claro sobre o que diz o livro, vamos explicar aqui primeiro. Se estiver confuso, pode ver a explicação no livro. Vamos ver a figura a seguir
Quando olhamos para métodos genéricos como este, na prática, precisamos substituir os tipos de parâmetros dentro deles (já foi mencionado anteriormente, os tipos de parâmetros são marcadores de posição dos parâmetros de tipo reais), usando string para substituir T, usando int para substituir TOutput
public static List<int> GetAll(Converter<string, int> conv) { }
Dentre eles, Converter<string, int> é um tipo construído, conv é um parâmetro de forma, agora você deve saber a função deste método genérico: usar uma instância de Converter<string, int> como parâmetro genérico, retornando uma lista contendo inteiros.
O que foi mencionado acima são os tipos genéricos C# que o editor apresentou aos leitores, esperando que seja útil para todos!