Valore di default di una classe
Molto spesso può essere utile avere un modo rapido per ottenere un'istanza di default di una classe. Il valore
default(T)
per una classe (non struct!) è sempre null e quindi non ci torna molto utile. Vediamo quindi come produrre un'istanza default un'unica volta e recuperarla ogni volta che ne abbiamo bisogno.
public class Dummy { public static Dummy Default { get; private set; } static Dummy() { Default = new Dummy(); } }
Nel codice che abbiamo mostrato c'è una proprietà statica Default che ci permette di recuperare un'istanza della classe. La logica di creazione di questa istanza sta in un costruttore statico che viene chiamato dal Framework una sola volta prima di accedere ad una qualunque proprietà o metodo statico della classe a cui appartiene.
Per evitare che la proprietà Default sia modificata in qualunque modo abbiamo definito privato il set.
In questo modo abbiamo ottenuto un'istanza, a cui accedere rapidamente, la cui creazione avviene una sola volta. Il vantaggio di questo approccio sta esattamente nel fatto che non abbiamo bisogno di istanziare un nuovo oggetto ogni volta che ne abbiamo bisogno ma possiamo accedere sempre allo stesso. Un notevole vantaggio nel caso in cui la creazione dell'istanza sia "dispendiosa".