
Continuiamo in questa puntata con le speculazioni estive intorno all’argomento del boxing/unboxing e perfomance.
Nel post precedente abbiamo parlato di cosa vogliano dire i termini in oggetto, e abbiamo evidenziate le motivazioni che stanno dietro alle penalità di perfomance proposte per queste attività.
Qui ora acceneremo qualcosa riguardo ai generics.
Uno dei grossi vantaggi introdotti dal mondo “generics” è legato alle perfomance, oltre che la “type safety”.
L’abbiamo già accennato, ma è meglio rispecificare. Con quest’ultimo termine si intendono le attività atte a evitare gli errori derivanti da lavorare con variabili di tipo incerto: la definizione è abbastanza generica, ma sono certo che rende bene l’idea.
Per vedere bene i vantaggi e gli svantaggi vediamo l’utilizzo della classe ArrayList fornita da .Net Framework, e che è una delle poche classi che permette l’utilizzo di object come argomento.
Per i pochi che non lo sanno la classe ArrayList rappresenta un semplice array di object la cui dimensione autonomamente e dinamicamente si adatta ai valori inseriti senza dover fare alcunchè.
Essendo che tutte le variabili in .Net derivano da System.Object, sia direttamente che indirettamente, ecci che quindi object è in grado di ospitare qualisiasi tipo di dato.
Può sembrare una stranezza, ma è proprio così: usando ArrayList è possibile aggiungere a questa un intero, una stringa, un oggetto, o comunque una variabile di qualsiasi tipo ci passi per la testa.
Questa “libertà”, però, ha conseguenze nefaste, se non è ben gestita.
Continue reading

