Lazy<T>.IsValueCreated Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает значение, которое показывает, создано ли значение для этого экземпляра Lazy<T>.
public:
property bool IsValueCreated { bool get(); };
public bool IsValueCreated { get; }
member this.IsValueCreated : bool
Public ReadOnly Property IsValueCreated As Boolean
Значение свойства
Значение 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
.