Da .NET 4 in poi, Lazy<T>
può essere utilizzato per inizializzare gli oggetti con pigrizia. Intuitivamente, l'inizializzazione pigra può essere eseguita anche nel depuratore della proprietà pubblica per fornire la stessa funzionalità al chiamante. Mi chiedo se lo Lazy<T>
offra alcun vantaggio intrinseco rispetto a quest'ultimo e dovrebbe quindi essere preferito?Si deve preferire Lazy <T> all'inizializzazione pigra in un getter?
Personalmente, ritengo che Lazy<>
possa ridurre rapidamente la leggibilità del codice, ma forse l'ho appena visto utilizzato in modo improprio. Da un lato positivo, garantisce la sicurezza del thread, ma ci sono molti costrutti di sincronizzazione .NET che - forse ho torto - rendono abbastanza facile ottenere lo stesso all'interno di un getter.
Quali sono alcune considerazioni da tenere presente quando si sceglie l'approccio migliore?
Fornire un esempio di inizializzazione lazy ottenuta senza 'Lazy'. Non è così facile come sembri pensare. –
possibile duplicato di [Proprietà cache vs Lazy] (http://stackoverflow.com/questions/5134786/cached-property-vs-lazyt) –
Default
Impostazione predefinita: mancato, grazie. Questo può essere contrassegnato come duplicato. @Ben Voigt: simile a ciò che Patrick Hofman descrive nella sua risposta. Inoltre, chiedo gentilmente alle persone di fare il downvoting per fornire commenti su come questa domanda possa essere migliorata (posso dire che sono un po 'deluso da quanto aggressivo sia diventato questo sito). – w128