1. Panoramica
Creare un oggetto richiede molta consapevolezza, e questo oggetto potrebbe non essere usato durante la runa, quindi per evitare di creare l'oggetto ogni volta, entra in gioco l'inizializzazione pigra (chiamata anche istanziazione pigra).
L'inizializzazione ritardata avviene in . NET 4.0, utilizzata principalmente per migliorare le prestazioni, evitare calcoli sprecati e ridurre i requisiti di memoria del programma. Può anche essere chiamato caricamento on-demand.
2. Grammatica di base
3. Implementa con esempi
Inizia creando una classe per studenti con il seguente codice:
Crea un programma console con il seguente codice:
Dopo aver impostato il punto di interruzione per il debug, ho scoperto che dopo il nuovo risultato, il valore di IsValueCreated di Studente era falso e il valore di valore era nullo
Poi, quando si chiama la proprietà Name, il valore di student's IsValueCreated è vero, e il valore di valore non è più nullo
Risultato della partita:
Si può vedere che lo Studente viene inizializzato solo quando viene prodotto l'attributo Nome, cioè viene inizializzato quando viene usato per la prima volta, per raggiungere lo scopo di ridurre il consumo.
Questo esempio è semplice e il <T>modo più basilare per usare Lazy. Possiamo anche usare<T> la funzione di sovraccarico di Lazy, Lazy<T> (Func<T>), per passare un delegato con un valore di ritorno e impostare il valore della proprietà dell'oggetto di inizializzazione lazy (Lazy initialization).
Risultato della partita:
Nota:<T> L'inizializzazione di oggetti Lazy è thread-safe di default e, in un ambiente multithreaded, il primo thread ad accedere<T> alla proprietà Valore dell'oggetto Lazy inizializzerà<T> l'oggetto Lazy e i thread di accesso successivi utilizzeranno i dati inizializzati per la prima volta.
4. Scenari applicativi
C'è un oggetto che ha molto overhead da creare, e il programma potrebbe non usarlo. Ad esempio, supponiamo che il tuo programma carichi diverse istanze di oggetti all'avvio, ma solo poche istanze debbano essere eseguite immediatamente. Puoi migliorare le prestazioni di avvio del tuo programma ritardando l'inizializzazione di oggetti non necessari fino a quando gli oggetti necessari non sono stati creati.
|