This topic has not yet been rated - Rate this topic

Lazy<T>.IsValueCreated Property

Gets a value that indicates whether a value has been created for this Lazy<T> instance.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)
public bool IsValueCreated { get; }

Property Value

Type: System.Boolean
true if a value has been created for this Lazy<T> instance; otherwise, false.

When lazy initialization occurs for a Lazy<T> instance, it may result in either a value being created or an exception being thrown. If an exception is thrown, subsequent behavior of the Lazy<T> instance depends on whether exception caching is in effect. 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. A subsequent attempt to initialize the Lazy<T> might succeed, and after successful initialization the IsValueCreated property returns true. 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.

  • If the mode is LazyThreadSafetyMode.ExecutionAndPublication or LazyThreadSafetyMode.None, there is no second chance to initialize the Lazy<T> instance. 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. No value is created if an exception is thrown, so in such cases IsValueCreated returns false.

  • 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. If the initialization function throws an exception on one thread, other threads can still try to initialize the Lazy<T> instance. Until the value is created, the IsValueCreated property returns false.

.NET Framework

Supported in: 4.5, 4

.NET Framework Client Profile

Supported in: 4

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Did you find this helpful?
(1500 characters remaining)
© 2013 Microsoft. All rights reserved.