1. Prehľad
Vytvorenie objektu vyžaduje veľa spotreby a tento objekt sa počas behu nemusí používať, takže aby sa predišlo jeho vytváraniu zakaždým, prichádza do hry lenivá inicializácia (nazývaná aj lenivá inštancia).
Oneskorená inicializácia nastáva v . NET 4.0, ktorý sa primárne používa na zlepšenie výkonu, zabránenie zbytočnému výpočtu a zníženie požiadaviek na pamäť programu. Môže sa tiež nazývať načítavanie na požiadanie.
2. Základná gramatika
3. Implementujte s príkladmi
Začnite vytvorením triedy Študent s nasledujúcim kódom:
Vytvorte konzolový program s nasledujúcim kódom:
Po nastavení breakpointu pre ladenie som zistil, že po novom som zistil, že hodnota Student's IsValueCreated bola nepravdivá a hodnota hodnoty nulová
Potom, pri volaní vlastnosti Name, hodnota študentovho IsValueCreated je pravdivá a hodnota hodnoty už nie je nulová
Výsledok behu:
Je vidieť, že Študent je inicializovaný iba vtedy, keď je atribút Name vypísaný, teda je inicializovaný pri prvom použití, aby sa dosiahol účel zníženia spotreby.
Tento príklad je jednoduchý a <T>najzákladnejší spôsob, ako použiť Lazy. Môžeme tiež použiť<T> preťažovaciu funkciu Lazy, Lazy<T> (Func<T>), na odoslanie delegáta s vrátenou hodnotou na nastavenie hodnoty vlastnosti objektu inicializačnej lenivosti.
Výsledok behu:
Poznámka:<T> Inicializácia Lazy objektu je štandardne bezpečná pre vlákna a v prostredí s viacerými vláknami prvé vlákno, ktoré pristupuje<T> k vlastnosti Hodnota objektu Lazy, inicializuje objekt Lazy<T> a nasledujúce prístupové vlákna použijú inicializované dáta po prvýkrát.
4. Aplikačné scenáre
Existuje objekt, ktorý má veľkú režijnú záťaž na vytvorenie a program ho nemusí používať. Napríklad, predpokladajme, že váš program pri štarte načíta niekoľko inštancií objektov, ale len niekoľko inštancií musí byť okamžite spustených. Môžete zlepšiť štartovací výkon svojho programu tým, že odložíte inicializáciu nepotrebných objektov až po vytvorení potrebných objektov.
|