1. Áttekintés
Sok fogyasztást igényel egy objektum létrehozása, és ez az objektum nem feltétlenül használható a futtatás során, ezért annak elkerülése érdekében, hogy minden alkalommal létrejöjjön, lusta inicializáció (más néven lusta instanciáció) lép be.
Késleltetett inicializáció . A NET 4.0-t elsősorban a teljesítmény javítására, a számítás pazarlásának elkerülésére és a programmemória igények csökkentésére használják. Ezt nevezhető igény szerinti betöltésnek is.
2. Alapvető nyelvtan
3. Példákkal történő megvalósítás
Kezdjük azzal, hogy létrehozz egy diákosztályt a következő kóddal:
Hozz létre konzolprogramot a következő kóddal:
Miután beállítottam a hibakeresés töréspontját, azt tapasztaltam, hogy az új után a Student IsValueCreated értéke hamis, és az érték értéke nulla
Ezután, amikor a Név tulajdonságot hívjuk, a hallgató IsValueCreated értéke igaz, és az érték már nem null
Futás eredménye:
Látható, hogy a Student csak akkor inicializálódik, amikor a Név attribútum kimenete van, vagyis az első használatkor inicializálják, hogy csökkentsék a fogyasztást.
Ez a példa egyszerű és a <T>legegyszerűbb módja a Lazy használatának. <T> Használhatjuk a Lazy túlterhelés függvényét, a Lazy<T> (Func<T>) funkcióját is, hogy továbbítsunk egy delegátumot visszatérési értékkel a lazy inicializációs objektum tulajdonságértékének beállításához.
Futás eredménye:
Megjegyzés: A lazy<T> objektum inicializálása alapértelmezés szerint szálbiztonságú, és többszálas környezetben az első szál, amely<T> eléri a Lazy objektum Value tulajdonságát, inicializálja a Lazy<T> objektumot, és a következő hozzáférési szálak először használják az inicializált adatokat.
4. Alkalmazási forgatókönyvek
Van egy objektum, amelynek sok többletterhelése van, és a program feltétlenül nem használja azt. Tegyük fel, hogy a programod indításkor több objektumpéldányt tölt be, de csak néhány példányt kell azonnal végrehajtani. Javíthatod a program indítási teljesítményét azzal, hogy a felesleges objektumok inicializálását késlelteted, amíg a szükséges objektumok létrejöttek.
|