Lazy<T>.IsValueCreated Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der angibt, ob ein Wert für diese Lazy<T>-Instanz erstellt wurde.
public:
property bool IsValueCreated { bool get(); };
public bool IsValueCreated { get; }
member this.IsValueCreated : bool
Public ReadOnly Property IsValueCreated As Boolean
Eigenschaftswert
true
, wenn ein Wert für diese Lazy<T>-Instanz erstellt wurde, andernfalls false
.
Hinweise
Wenn die lazy Initialisierung für eine Lazy<T> Instanz auftritt, kann es dazu führen, dass entweder ein Wert erstellt wird oder eine Ausnahme ausgelöst wird. Wenn eine Ausnahme ausgelöst wird, hängt das nachfolgende Verhalten der Lazy<T> Instanz davon ab, ob die Ausnahmespeicherung wirksam ist. Wenn die Lazy<T> Instanz mithilfe eines Konstruktors erstellt wurde, der keine Initialisierungsfunktion angibt, wird die Ausnahmespeicherung nicht wirksam. Ein anschließender Versuch, den Lazy<T> Erfolg zu initialisieren, und nach erfolgreicher Initialisierung gibt die IsValueCreated Eigenschaft zurück true
. Wenn die Lazy<T> Instanz mit einer Initialisierungsfunktion (angegeben durch den Parameter des Lazy<T> Konstruktors) erstellt wurde, wird die Ausnahmespeicherung durch den valueFactory
Threadsicherheitsmodus gesteuert.
Wenn der Modus vorhanden ist LazyThreadSafetyMode.ExecutionAndPublication oder LazyThreadSafetyMode.None, gibt es keine zweite Chance, die Lazy<T> Instanz zu initialisieren. Wenn eine Ausnahme auftritt und in der Initialisierungsfunktion nicht behandelt wird, wird diese Ausnahme zwischengespeichert und auf nachfolgenden Zugriffen der Lazy<T>.Value Eigenschaft erneut ausgelöst. Es wird kein Wert erstellt, wenn eine Ausnahme ausgelöst wird, sodass in solchen Fällen IsValueCreated eine Ausnahme zurückgegeben
false
wird.Wenn der Modus LazyThreadSafetyMode.PublicationOnlylautet, erstellt der erste Thread, der erfolgreich ist, um die Initialisierungsfunktion (oder den parameterlosen Konstruktor) auszuführen, den Wert für die Lazy<T> Instanz. Wenn die Initialisierungsfunktion eine Ausnahme auf einem Thread auslöst, können andere Threads weiterhin versuchen, die Lazy<T> Instanz zu initialisieren. Bis der Wert erstellt wird, gibt die IsValueCreated Eigenschaft zurück
false
.