1. Огляд
Створення об'єкта потребує чимало витрат, і цей об'єкт може не використовуватися під час запуску, тому, щоб уникнути створення об'єкта щоразу, входить в гру лінива ініціалізація (також звана лінива інстанція).
Відкладена ініціалізація відбувається в . NET 4.0, який головним чином використовується для підвищення продуктивності, уникнення марних обчислень і зменшення потреб у пам'яті програми. Це також можна назвати завантаженням на вимогу.
2. Базова граматика
3. Реалізуйте за допомогою прикладів
Почніть зі створення студентського класу з таким кодом:
Створіть консольну програму з таким кодом:
Після встановлення точки зупину для налагодження я виявив, що після нового значення Student's IsValueCreated було хибним, а значення значення — null
Тоді, при виклику властивості Name, значення IsValueCreated студента є істинним, і значення значення більше не є нульовим
Результат забігу:
Видно, що Студент ініціалізується лише тоді, коли атрибут Ім'я виведений, тобто при першому використанні, щоб досягти мети зменшення споживання.
Цей приклад простий і <T>найпростіший спосіб використання Lazy. Ми також можемо<T> використати функцію перевантаження Lazy (<T>Func<T>), щоб передати делегата з поверненим значенням для встановлення властивості об'єкта лінивої ініціалізації.
Результат забігу:
Примітка:<T> Ініціалізація лінивих об'єктів за замовчуванням є потоковою, і в багатопотоковому середовищі перший потік, що отримає<T> доступ до властивості Значення об'єкта Lazy, ініціалізує об'єкт Lazy<T>, а наступні потоки доступу вперше використовують ці дані.
4. Сценарії застосування
Є об'єкт, який має багато накладних витрат для створення, і програма може його не використовувати. Наприклад, уявімо, що ваша програма завантажує кілька екземплярів об'єктів при запуску, але потрібно виконати лише кілька екземплярів одразу. Ви можете покращити продуктивність запуску вашої програми, відкладаючи ініціалізацію непотрібних об'єктів до створення необхідних об'єктів.
|