1. Pārskats
Lai izveidotu objektu, ir nepieciešams liels patēriņš, un šo objektu var neizmantot skrējiena laikā, tāpēc, lai izvairītos no objekta izveides katru reizi, tiek izmantota slinka inicializācija (saukta arī par slinku instantiāciju).
Aizkavēta inicializācija notiek . NET 4.0, kas galvenokārt tiek izmantots, lai uzlabotu veiktspēju, izvairītos no izšķērdētiem aprēķiniem un samazinātu programmas atmiņas prasības. To var saukt arī par ielādi pēc pieprasījuma.
2. Pamata gramatika
3. Īstenot ar piemēriem
Sāciet ar studentu klases izveidi ar šādu kodu:
Izveidojiet konsoles programmu ar šādu kodu:
Pēc atkļūdošanas pārtraukuma punkta iestatīšanas es atklāju, ka pēc jauna studenta IsValueCreated vērtība bija nepatiesa un vērtības vērtība bija nulle
Pēc tam, izsaucot rekvizītu Name, studenta IsValueCreated vērtība ir patiesa, un vērtības vērtība vairs nav nulle
Izpildes rezultāts:
Var redzēt, ka students tiek inicializēts tikai tad, kad tiek izvadīts atribūts Nosaukums, tas ir, tas tiek inicializēts, kad tas tiek izmantots pirmo reizi, lai sasniegtu patēriņa samazināšanas mērķi.
Šis piemērs ir vienkāršs un <T>visvienkāršākais veids, kā lietot Lazy. Mēs varam arī izmantot<T> Lazy pārslodzes funkciju Lazy<T> (Func<T>), lai nodotu pārstāvi ar atgriešanās vērtību, lai iestatītu slinkā inicializācijas objekta rekvizīta vērtību.
Izpildes rezultāts:
Piezīme: Lazy<T> objekta inicializācija pēc noklusējuma ir droša pret pavedieniem, un vairāku pavedienu vidē pirmais pavediens, kas piekļūst<T> Lazy objekta rekvizītam Value<T>, inicializēs Lazy objektu, un turpmākie piekļuves pavedieni izmantos pirmo reizi inicializētos datus.
4. Lietošanas scenāriji
Ir objekts, kuram ir daudz pieskaitāmo izdevumu, un programma to var neizmantot. Piemēram, pieņemsim, ka startēšanas laikā programma ielādē vairākus objektu gadījumus, bet tikai daži gadījumi ir jāizpilda nekavējoties. Programmas startēšanas veiktspēju var uzlabot, aizkavējot nevajadzīgo objektu inicializāciju līdz nepieciešamo objektu izveidei.
|