다음을 통해 공유


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

속성 값

값이 이 Lazy<T> 인스턴스에 대해 만들어졌으면 true이고, 그렇지 않으면 false입니다.

설명

인스턴스에 대해 Lazy<T> 지연 초기화가 발생하면 값이 생성되거나 예외가 throw될 수 있습니다. 예외가 throw되면 인스턴스의 Lazy<T> 후속 동작은 예외 캐싱이 적용되는지 여부에 따라 달라집니다. 초기화 함수를 Lazy<T> 지정하지 않는 생성자를 사용하여 인스턴스를 만든 경우 예외 캐싱이 적용되지 않습니다. 를 초기화 Lazy<T> 하려는 후속 시도가 성공할 수 있으며 초기화에 성공한 후 속성은 를 IsValueCreated 반환합니다 true. 인스턴스가 Lazy<T> 초기화 함수(생성자의 매개 변수 Lazy<T> 에 의해 valueFactory 지정됨)로 만들어진 경우 예외 캐싱은 스레드 안전 모드에 의해 제어됩니다.

  • 모드가 또는 LazyThreadSafetyMode.NoneLazyThreadSafetyMode.ExecutionAndPublication 면 인스턴스를 초기화 Lazy<T> 할 수 있는 두 번째 기회가 없습니다. 예외가 발생하고 초기화 함수에서 처리되지 않은 경우 해당 예외는 속성의 Lazy<T>.Value 후속 액세스에서 캐시되고 다시 throw됩니다. 예외가 throw되면 값이 만들어지지 않으므로 이러한 경우 를 반환false합니다IsValueCreated.

  • 모드가 이 LazyThreadSafetyMode.PublicationOnly면 초기화 함수(또는 매개 변수가 없는 생성자)를 실행하는 데 성공한 첫 번째 스레드가 인스턴스에 Lazy<T> 대한 값을 만듭니다. 초기화 함수가 한 스레드에서 예외를 throw하는 경우 다른 스레드는 인스턴스를 초기화 Lazy<T> 하려고 시도할 수 있습니다. 값을 만들 때까지 속성은 를 IsValueCreated 반환합니다 false.

적용 대상

추가 정보