1. Prezentare generală
Este nevoie de multă consum pentru a crea un obiect, iar acest obiect poate să nu fie folosit în timpul execuției, așa că, pentru a evita crearea obiectului de fiecare dată, intră în joc inițializarea leneșă (numită și instanțiere leneșă).
Inițializarea întârziată are loc în . NET 4.0, care este folosit în principal pentru îmbunătățirea performanței, evitarea calculului irosit și reducerea cerințelor de memorie ale programului. Poate fi numită și încărcare la cerere.
2. Gramatică de bază
3. Implementare cu exemple
Începe prin a crea o clasă pentru elevi cu următorul cod:
Creează un program de consolă cu următorul cod:
După ce am setat punctul de întrerupere pentru depanare, am descoperit că după noutare, valoarea IsValueCreated a lui Student era falsă, iar valoarea valorii era nulă
Atunci, când se apelează proprietatea Nume, valoarea IsValueCreated a studentului este adevărată, iar valoarea valorii nu mai este nulă
Rezultatul run-ului:
Se poate observa că Student este inițializat doar când atributul Name este generat, adică este inițializat când este folosit pentru prima dată, pentru a atinge scopul reducerii consumului.
Acest exemplu este simplu și <T>cea mai simplă metodă de a folosi Lazy. Putem folosi, de asemenea<T>, funcția de suprasarcină a lui Lazy,<T> Lazy (Func<T>), pentru a introduce un delegat cu o valoare de returnare pentru a seta valoarea proprietății obiectului de inițializare lazy (Lazy Initialization).
Rezultatul run-ului:
Notă:<T> Inițializarea obiectelor Lazy este implicit sigură la thread, iar într-un mediu multi-threaded, primul fir care accesează<T> proprietatea Value a obiectului Lazy va inițializa obiectul Lazy<T> obiect, iar firele de acces ulterioare vor folosi datele inițializate pentru prima dată.
4. Scenarii de aplicare
Există un obiect care are mult overhead de creat, iar programul s-ar putea să nu-l folosească. De exemplu, să presupunem că programul tău încarcă mai multe instanțe de obiecte la pornire, dar doar câteva instanțe trebuie executate imediat. Poți îmbunătăți performanța la pornire a programului tău întârziind inițializarea obiectelor inutile până după ce acestea au fost create.
|