Lazy<T>.IsValueCreated Lazy<T>.IsValueCreated Lazy<T>.IsValueCreated Lazy<T>.IsValueCreated Property

Определение

Получает значение, указывающее, было ли создано значение для данного экземпляра Lazy<T>.Gets a value that indicates whether a value has been created for this Lazy<T> instance.

public:
 property bool IsValueCreated { bool get(); };
public bool IsValueCreated { get; }
member this.IsValueCreated : bool
Public ReadOnly Property IsValueCreated As Boolean

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

Значение true, если для данного экземпляра Lazy<T> было создано значение; в противном случае — значение false.true if a value has been created for this Lazy<T> instance; otherwise, false.

Комментарии

Когда происходит отложенная инициализация для Lazy<T> экземпляр, это может привести значение создаваемого или возникает исключение.When lazy initialization occurs for a Lazy<T> instance, it may result in either a value being created or an exception being thrown. Если исключение создается, последующее поведение Lazy<T> экземпляр зависит от того, кэширование исключений, является ли в силе.If an exception is thrown, subsequent behavior of the Lazy<T> instance depends on whether exception caching is in effect. Если Lazy<T> экземпляр был создан с помощью конструктора, который не содержит функцию, то кэширование исключений не действует.If the Lazy<T> instance was created by using a constructor that does not specify an initialization function, then exception caching is not in effect. Повторная попытка инициализировать Lazy<T> может быть выполнена успешно и после успешной инициализации IsValueCreated возвращает true.A subsequent attempt to initialize the Lazy<T> might succeed, and after successful initialization the IsValueCreated property returns true. Если Lazy<T> экземпляр был создан с помощью функции инициализации (определяется valueFactory параметр Lazy<T> конструктора), а затем кэширование исключений управляется потокобезопасный режим.If the Lazy<T> instance was created with an initialization function (specified by the valueFactory parameter of the Lazy<T> constructor), then exception caching is controlled by the thread safety mode.

  • Если используется режим LazyThreadSafetyMode.ExecutionAndPublication или LazyThreadSafetyMode.None, имеется второй шанс инициализации Lazy<T> экземпляра.If the mode is LazyThreadSafetyMode.ExecutionAndPublication or LazyThreadSafetyMode.None, there is no second chance to initialize the Lazy<T> instance. Если исключение возникает и обрабатывается в функции инициализации, исключение кэшируется и снова на последующие обращения к Lazy<T>.Value свойство.If an exception occurs and is unhandled in the initialization function, that exception is cached and rethrown on subsequent accesses of the Lazy<T>.Value property. Значение не создается в том случае, если создается исключение, поэтому в таких случаях IsValueCreated возвращает false.No value is created if an exception is thrown, so in such cases IsValueCreated returns false.

  • Если используется режим LazyThreadSafetyMode.PublicationOnly, первый поток, который успешно работает функция инициализации (или конструктор по умолчанию) создает значение Lazy<T> экземпляра.If the mode is LazyThreadSafetyMode.PublicationOnly, the first thread that succeeds in running the initialization function (or the default constructor) creates the value for the Lazy<T> instance. Если функция инициализации вызывает исключение в одном потоке, другие потоки могут по-прежнему пытаться инициализировать Lazy<T> экземпляра.If the initialization function throws an exception on one thread, other threads can still try to initialize the Lazy<T> instance. Пока это значение создается, IsValueCreated возвращает false.Until the value is created, the IsValueCreated property returns false.

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

Дополнительно