1. Overzicht
Het kost veel consumptie om een object te maken, en dit object mag niet tijdens de run worden gebruikt, dus om te voorkomen dat het object elke keer wordt gemaakt, komt luie initialisatie (ook wel lazy instantie genoemd) in gebruik.
Vertraagde initialisatie vindt plaats in . NET 4.0, dat voornamelijk wordt gebruikt om de prestaties te verbeteren, verspilde berekeningen te voorkomen en de geheugenbehoefte van programma's te verminderen. Het kan ook on-demand laden worden genoemd.
2. Basisgrammatica
3. Implementeren met voorbeelden
Begin met het aanmaken van een Student-klas met de volgende code:
Maak een consoleprogramma met de volgende code:
Na het instellen van het breakpoint voor debuggen ontdekte ik dat na een nieuw nummer de waarde van Student's IsValueCreated onjuist was en de waarde van de waarde null was
Daarna, bij het aanroepen van de eigenschap Name, is de waarde van student's IsValueCreated waar, en is de waarde van de waarde niet langer nul
Run resultaat:
Uit te zien is dat de Student alleen wordt geïnitialiseerd wanneer het Name-attribuut wordt uitgevoerd, dat wil zeggen, het wordt geïnitialiseerd wanneer het voor het eerst wordt gebruikt, om het doel te bereiken van het verminderen van het verbruik.
Dit voorbeeld is eenvoudig en de <T>meest basale manier om Lazy te gebruiken. We kunnen ook<T> de overloadfunctie van Lazy, Lazy<T> (Func<T>), gebruiken om een delegate met een returnwaarde door te geven om de eigenschapswaarde van het lazy initialisatieobject te bepalen.
Run resultaat:
Opmerking: Lazy<T> objectinitialisatie is standaard thread-veilig, en in een multithreaded omgeving zal de eerste thread die<T> toegang krijgt tot de eigenschap Value van het Lazy object het<T> Lazy-object initialiseren, en volgende toegangsthreads gebruiken de geïnitialiseerde data voor het eerst.
4. Toepassingsscenario's
Er is een object dat veel overhead heeft om te maken, en het programma gebruikt het mogelijk niet. Stel bijvoorbeeld dat je programma bij het opstarten meerdere instanties van objecten laadt, maar slechts een paar instanties direct hoeven te worden uitgevoerd. Je kunt de opstartprestaties van je programma verbeteren door de initialisatie van onnodige objecten uit te stellen tot nadat de benodigde objecten zijn aangemaakt.
|