Lazy<'T>.IsValueCreated Property


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

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

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

member IsValueCreated : bool with 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>.Valueproperty. 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.

Universal Windows Platform
Available since 8
.NET Framework
Available since 4.0
Portable Class Library
Supported in: portable .NET platforms
Available since 4.0
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1
Return to top