Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 24478|Ответ: 2

[Источник] Оптимизация производительности C#: Lazy инициализирует ленивость с <T>задержкой

[Скопировать ссылку]
Опубликовано 17.06.2019 16:17:17 | | | |
1. Обзор

Создание объекта требует больших затрат, и этот объект может не использоваться во время запуска, поэтому, чтобы не создавать объект каждый раз, в игру вступает ленивая инициализация (также называемая ленивым экземпляром).

Задержка инициализации происходит в . NET 4.0, который в первую очередь используется для повышения производительности, предотвращения потери вычислений и снижения требований к памяти программы. Это также можно назвать загрузкой по требованию.

2. Основная грамматика


3. Реализовать с помощью примеров

Начните с создания студенческого класса с следующим кодом:

Создайте консольную программу со следующим кодом:

После установки точки останова для отладки я обнаружил, что после обновления значение Student's IsValueCreated ложное, а значение значения — null



Затем, при вызове свойства Name, значение IsValueCreated студента становится истинным, и значение значения больше не является нулевым



Результат забега:



Можно увидеть, что Student инициализируется только тогда, когда атрибут Name выходит, то есть при первом использовании, чтобы достичь цели снижения потребления.

Этот пример прост и <T>самый базовый способ использования Lazy. Мы также можем использовать<T> функцию перегрузки Lazy,<T> Lazy (Func<T>), чтобы передать делегата с возвращаемым значением, чтобы задать значение свойства объекта ленивого инициализации.

Результат забега:



Примечание:<T> Инициализация ленивого объекта по умолчанию безопасна для потоков, и в многопоточной среде первый поток, получивший доступ<T> к свойству Value, инициализирует<T> объект Ленивый, а последующие потоки доступа впервые используют инициализированные данные.

4. Сценарии применения

Есть объект, который требует больших накладных затрат, и программа может его не использовать. Например, предположим, что ваша программа загружает несколько экземпляров объектов при запуске, но нужно сразу выполнить только несколько экземпляров. Вы можете улучшить производительность запуска вашей программы, откладывая инициализацию ненужных объектов до тех пор, пока необходимые объекты не будут созданы.






Предыдущий:Расскажите несколько правд о интервью
Следующий:Руководство пользователя для тестового инструмента JCSHELL
Опубликовано 18.06.2019 18:18:32 |
Ну, понял
 Хозяин| Опубликовано 04.07.2023 19:19:55 |
Как Lazy в C# сохраняет безопасность ниток
https://www.itsvse.com/thread-10621-1-1.html
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com