stavo leggiucchiando un pò le specifiche di C#2, la mia attenziene è caduta su i Generics , ovvero classi, metodi e strutture che possono essere parametrizate in base al tipo di dati che contengono e manipolano
EX (preso dalla documentazione):
public class Stack
{
object[] items;
int count;
public void Push(object item) {...}
public object Pop() {...}
}
questa semplice classe memorizza in un array delle istanze della classe object , una classe speciale che sta alla base di tutte le classi e per tutti i tipi compresi i tipi valore
Stack stack = new Stack();
stack.Push(3);
int i = (int)stack.Pop();
memorizzo nel mio array di object una serie di valori, per recuperarli devo eseguire il casting in int
dove ci può aiutare Generics? riscriviamo la nostra classe
public class Stack<T>
{
T[] items;
int count;
public void Push(T item) {...}
public T Pop() {...}
}
accanto alla definizione di classe torviamo <T> consideriamola come un etichetta, adesso creiamo un istanza della classe
Stack<int> stack = new Stack<int>();
stack.Push(3);
int x = stack.Pop();
come vediamo tra <...> c'è int , in poche parole il compilatore andra a sostituire ogni occorenza di T con int difatto tipizzando l'array e rendendo inutile il casting
tutto questo rende il codice più "veloce" in quanto non è più necessario nessun tipo di conversione
cosa da non sottovalutare posso inizializzare ogni nuova istanza della classe in base hai dati che tratterà
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- ma dove vai se il var non ..., il 19 luglio 2006 alle 14:47
- DLINQ volume due, il 15 settembre 2005 alle 15:43
- DLinq mi piace , il 15 settembre 2005 alle 10:19
- ancora stringhe, il 21 dicembre 2004 alle 15:24
- in parziale rettifica o precisazione di quanto detto(...), il 13 dicembre 2004 alle 08:00
- interfacce, implementazioni esplicite, l'1 dicembre 2004 alle 14:12