1. Pregled
Ustvarjanje objekta zahteva veliko porabe in ta objekt morda ne bo uporabljen med izvajanjem, zato, da se izognemo vsakičnemu ustvarjanju objekta, pride v poštev lenobna inicializacija (imenovana tudi lenobna instanca).
Zakasnjena inicializacija se zgodi v . NET 4.0, ki se uporablja predvsem za izboljšanje zmogljivosti, preprečevanje nepotrebnega računanja in zmanjšanje zahtev po programskem pomnilniku. Lahko se imenuje tudi nalaganje na zahtevo.
2. Osnovna slovnica
3. Implementirajte z zgledi
Začnite z ustvarjanjem študentskega razreda z naslednjo kodo:
Ustvarite konzolni program z naslednjo kodo:
Po nastavitvi točke prekinitve za odpravljanje napak sem ugotovil, da je po novem preverjanju vrednost Studentove IsValueCreated napačna, vrednost vrednosti pa ničelna
Nato, ko kličemo lastnost Name, je vrednost študentovega IsValueCreated resnična, vrednost vrednosti pa ni več ničelna
Rezultat teka:
Vidimo lahko, da se Student inicializira šele, ko je atribut Name izhoden, torej je inicializiran ob prvi uporabi, da se doseže namen zmanjšanja porabe.
Ta primer je preprost in <T>najbolj osnovni način uporabe Lazy. Uporabimo lahko tudi<T> Lazyjevo funkcijo preobremenitve, Lazy<T> (Func<T>), da posredujemo delegata z vrnjeno vrednostjo, da nastavimo vrednost lastnosti objekta za inicializacijo lazy.
Rezultat teka:
Opomba:<T> inicializacija lenobnega objekta je privzeto varna za niti in v večnitnem okolju bo prva nit, ki dostopa do<T> lastnosti Vrednost lenega objekta, inicializirala objekt Lazy<T>, naslednje dostopne niti pa bodo prvič uporabile inicializirane podatke.
4. Scenariji uporabe
Obstaja objekt, ki ima veliko režijskih stroškov za ustvarjanje, program pa ga morda ne bo uporabil. Na primer, predpostavimo, da vaš program ob zagonu naloži več primerkov objektov, vendar je treba takoj zagnati le nekaj primerkov. Zagonsko zmogljivost programa lahko izboljšate tako, da inicializacijo nepotrebnih objektov odložite, dokler niso potrebni objekti ustvarjeni.
|