1. Oversikt
Det krever mye forbruk å lage et objekt, og dette objektet kan ikke brukes under kjøringen, så for å unngå å lage objektet hver gang, kommer lat initialisering (også kalt lat instansiering) i bruk.
Forsinket initialisering skjer i . NET 4.0, som primært brukes for å forbedre ytelsen, unngå bortkastet beregning og redusere kravene til programminne. Det kan også kalles on-demand lasting.
2. Grunnleggende grammatikk
3. Implementer med eksempler
Start med å lage en studentklasse med følgende kode:
Lag et konsollprogram med følgende kode:
Etter å ha satt breakpunktet for feilsøking, fant jeg ut at etter nytt var verdien til Student's IsValueCreated feil og verdien til verdien null
Da, når man kaller Name-egenskapen, er verdien av studentens IsValueCreated sann, og verdien av verdien er ikke lenger null
Løpsresultat:
Det kan sees at Student initialiseres kun når Navn-attributtet sendes ut, det vil si at det initialiseres når det brukes for første gang, for å oppnå formålet å redusere forbruket.
Dette eksempelet er enkelt og den <T>mest grunnleggende måten å bruke Lazy på. Vi kan også bruke<T> Lazys overbelastningsfunksjon, Lazy<T> (Func<T>), for å sende inn en delegat med en returverdi for å sette egenskapsverdien til lat initialiseringsobjektet.
Løpsresultat:
Merk:<T> Lazy-objektinitialisering er trådsikker som standard, og i et flertrådet miljø vil den første tråden som får tilgang til<T> Lazy-objektets Value-egenskap initialisere<T> Lazy-objektet, og påfølgende tilgangstråder vil bruke dataene som initialiseres for første gang.
4. Anvendelsesscenarier
Det finnes et objekt som har mye overhead å lage, og programmet bruker det kanskje ikke. For eksempel, anta at programmet ditt laster inn flere instanser av objekter ved oppstart, men bare noen få instanser trenger å utføres umiddelbart. Du kan forbedre oppstartsytelsen til programmet ditt ved å utsette initialiseringen av unødvendige objekter til etter at de nødvendige objektene er opprettet.
|