1. Обзор
Създаването на обект изисква много усилия, а този обект може да не се използва по време на изпълнението, затова за да се избегне създаването му всеки път, се използва мързелива инициализация (наричана още мързелива инстанциация).
Забавената инициализация се случва в . NET 4.0, който основно се използва за подобряване на производителността, избягване на излишни резултати и намаляване на изискванията за програмна памет. Може да се нарече и зареждане по заявка.
2. Основна граматика
3. Имплементирайте с примери
Започнете с създаване на студентски клас със следния код:
Създайте конзолна програма със следния код:
След като зададох точката на прекъсване за дебъгване, установих, че след нов запис стойността на Student's IsValueCreated е невярна, а стойността на стойността е нулева
Тогава, когато се извиква свойството Name, стойността на IsValueCreated на ученика е вярна и стойността вече не е нулева
Резултат от бягането:
Може да се види, че Student се инициализира само когато атрибутът Name е изведен, тоест инициализиран при първата си употреба, с цел постигане на целта за намаляване на потреблението.
Този пример е прост и <T>най-основният начин за използване на Lazy. Можем също да<T> използваме функцията за претоварване на Lazy,<T> Lazy (Func<T>), за да подадем делегат с връщана стойност, за да зададем стойността на свойството на обекта за lazy initialization.
Резултат от бягането:
Забележка:<T> Инициализацията на мързеливи обекти по подразбиране е безопасна за нишки, а в многонишкова среда първата нишка, която получи<T> достъп до свойството Стойност на Lazy обекта, ще инициализира<T> обекта Lazy, а следващите нишки за достъп ще използват инициализираните данни за първи път.
4. Сценарии на приложение
Има обект, който има много натоварване за създаване и програмата може да не го използва. Например, да предположим, че програмата ви зарежда няколко инстанции на обекти при стартиране, но само няколко инстанции трябва да се изпълнят веднага. Можете да подобрите стартиращата производителност на програмата си, като забавите инициализацията на ненужните обекти до създаването на необходимите обекти.
|