English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
L'articolo precedente ha introdotto una breve analisi del sistema di tipi in C# (tipi di valore e tipi di riferimento), e in questo articolo vi presenterò i tipi generici in C#.
Parliamo dei generici in C#, l'uso competente dei generici può migliorare la riutilizzabilità del codice, il nostro codice diventa istantaneamente più avanzato, naturalmente solo un po', davvero solo un po', perché ci sono ancora molte conoscenze da imparare e padroneggiare. Vediamo un esempio successivo dell'uso di 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; }
Le due forme dei tipi generici: i tipi generici (classi, interfacce, delegati e strutture) e i metodi generici, come TKey e TValue sono i parametri di tipo, mentre gli int e i string che vengono introdotti sono i tipi reali, si può vedere che i parametri di tipo sono soltanto segnaposto per i tipi reali. I tipi generici che non forniscono parametri reali dei tipi sono detti tipi generici non costruiti, se si specificano i parametri reali si chiamano tipi generici costruiti, e l'istanza del tipo è l'oggetto che usiamo. La seguente diagramma di relazione.
Determinare il giudizio dei tipi generici è una cosa che fa male alla testa, in seguito dobbiamo spiegare bene, potrei non essere molto chiaro, farò del mio meglio, perché anche io non capisco molto quello che dice il libro, prima di tutto, spiegatelo qui. Se non sei chiaro, puoi vedere la spiegazione nel libro. Vediamo prima l'immagine
Quando guardiamo un metodo generico come questo, nella pratica dobbiamo sostituire i tipi dei parametri all'interno (come ho anche detto prima, i tipi dei parametri sono soltanto segnaposto per i tipi di parametri reali), utilizzare string per sostituire T, utilizzare int per sostituire TOutput
public static List<int> GetAll(Converter<string, int> conv) { }
Converter<string, int> è un tipo già costruito, conv è un parametro formale, ora dovresti sapere la funzione di questo metodo generico: utilizzare un'istanza di Converter<string, int> come parametro generico, per restituire una lista che contiene interi.
L'elenco sopra menzionato è il tipo generico C# che ho introdotto a tutti voi, spero che sia utile!