le specifice di c# 2

di Marco Leoncini, in c#,

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à

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese