1. Yleiskatsaus
Objektin luominen vaatii paljon kulutusta, eikä tätä objektia välttämättä käytetä suorituksen aikana, joten välttääkseen objektin luomisen joka kerta, laiska alustus (eli laiska instanssi) astuu peliin.
Viivästynyt alustus tapahtuu . NET 4.0, jota käytetään ensisijaisesti suorituskyvyn parantamiseen, hukkaan menneen laskennan välttämiseen ja ohjelman muistin vähentämiseen. Sitä voidaan kutsua myös on-demand loadingiksi.
2. Peruskielioppi
3. Toteuta esimerkkien avulla
Aloita luomalla opiskelijaluokka seuraavalla koodilla:
Luo konsoliohjelma seuraavalla koodilla:
Kun määritin virheenkorjauksen katkeamispisteen, huomasin, että uuden jälkeen Studentin IsValueCreatedin arvo oli väärä ja arvon arvo nolla
Tällöin, kun kutsutaan Name-ominaisuutta, opiskelijan IsValueCreated-arvon arvo on tosi, eikä arvon arvo enää ole nolla
Juoksutulos:
On havaittavissa, että Student alustetaan vain, kun Nimi-attribuutti on tulostettu, eli se alustetaan ensimmäisellä käyttökerralla, jotta kulutusta voidaan vähentää.
Tämä esimerkki on yksinkertainen ja yksinkertaisin <T>tapa käyttää laiskaa. Voimme myös käyttää<T> Lazyn ylikuormitusfunktiota, Lazy<T> (Func<T>), välittääksemme delegaatin, jolla on palautusarvo, ja joka määrittää laiskan alustusobjektin ominaisuusarvon.
Juoksutulos:
Huomautus: Laiska<T> objektin alustus on oletuksena säiketurvallista, ja monisäikeisessä ympäristössä ensimmäinen säike, joka käyttää<T> Laiskan objektin Value-ominaisuutta, alustaa Laiskan<T> objektin, ja seuraavat pääsysäikeet käyttävät ensimmäistä kertaa alustettua dataa.
4. Sovellusskenaariot
On olemassa objekti, jolla on paljon ylikuormitusta luotavana, eikä ohjelma välttämättä käytä sitä. Esimerkiksi, jos ohjelmasi lataa useita olioinstansseja käynnistyksessä, mutta vain muutama instanssi tarvitsee suorittaa heti. Voit parantaa ohjelmasi käynnistyssuorituskykyä viivyttämällä tarpeettomien objektien alustusta siihen asti, kunnes tarvittavat objektit on luotu.
|