Прочитать на английском

Поделиться через


Lazy<T>.IsValueCreated Свойство

Определение

Важно!

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Получает значение, которое показывает, создано ли значение для этого экземпляра Lazy<T>.

C#
public bool IsValueCreated { get; }

Значение свойства

Значение true, если значение создано для этого экземпляра Lazy<T>; в противном случае — значение false.

Комментарии

Отложенная инициализация для экземпляра Lazy<T> может привести к созданию значения или возникновению исключения. При возникновении исключения последующее поведение экземпляра Lazy<T> зависит от того, действует ли кэширование исключений. Lazy<T> Если экземпляр был создан с помощью конструктора, который не указывает функцию инициализации, кэширование исключений не действует. Последующая попытка инициализации Lazy<T> может завершиться успешной, а после успешной инициализации IsValueCreated свойство возвращает true. Lazy<T> Если экземпляр был создан с помощью функции инициализации (указанной Lazy<T> параметром valueFactory конструктора), кэширование исключений управляется режимом безопасности потока.

  • Если режим имеет значение LazyThreadSafetyMode.ExecutionAndPublication или LazyThreadSafetyMode.None, второй шанс инициализировать Lazy<T> экземпляр не существует. Если исключение возникает и не рассматривается в функции инициализации, это исключение кэшируется и повторно развертывается при последующих обращениях к свойству Lazy<T>.Value . При возникновении исключения значение не создается, поэтому в таких случаях IsValueCreated возвращается falseзначение .

  • Если режим имеет значение LazyThreadSafetyMode.PublicationOnly, первый поток, который успешно выполняет функцию инициализации (или конструктор без параметров), создает значение для экземпляра Lazy<T> . Если функция инициализации создает исключение в одном потоке, другие потоки по-прежнему могут попытаться инициализировать Lazy<T> экземпляр . Пока значение не будет создано, IsValueCreated свойство возвращает false.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел