1. Überblick
Es erfordert viel Verbrauch, um ein Objekt zu erstellen, und dieses Objekt wird während des Laufs möglicherweise nicht verwendet, daher wird zur Umfangsdauer der Initialisierung (auch lazy Instanziation genannt) eingesetzt.
Verzögerte Initialisierung tritt in auf. NET 4.0, das hauptsächlich dazu dient, die Leistung zu verbessern, Rechenverschwendung zu vermeiden und den Programmspeicherbedarf zu senken. Es kann auch als On-Demand-Loading bezeichnet werden.
2. Grundgrammatik
3. Implementieren Sie mit Beispielen
Beginnen Sie damit, eine Studentenklasse mit folgendem Code zu erstellen:
Erstellen Sie ein Konsolenprogramm mit folgendem Code:
Nachdem ich den Breakpoint für das Debugging gesetzt hatte, stellte ich fest, dass nach einem neuen Wert der Wert von Student's IsValueCreated falsch war und der Wert null war
Dann ist beim Aufrufen der Name-Eigenschaft der Wert von IsValueCreated von student wahr, und der Wert des Wertes ist nicht mehr null
Laufergebnis:
Es ist zu sehen, dass der Student nur dann initialisiert wird, wenn das Name-Attribut ausgegeben wird, also beim ersten Mal verwendet, um den Zweck der Reduzierung des Verbrauchs zu erreichen.
Dieses Beispiel ist einfach und die <T>grundlegendste Art, Lazy zu verwenden. Wir können auch<T> Lazys Überlastfunktion Lazy<T> (Func<T>) verwenden, um einen Delegaten mit einem Rückgabewert zu übergeben, der den Eigenschaftswert des Lazy-Initialisierungsobjekts festlegt.
Laufergebnis:
Hinweis: Die<T> Initialisierung von Lazy-Objekten ist standardmäßig threadsicher, und in einer Multi-Thread-Umgebung initialisiert der erste Thread, der<T> auf die Lazy-Objekt-Eigenschaft Value zugreift, das Lazy-Objekt<T>, und nachfolgende Zugriffsthreads verwenden die initialisierten Daten zum ersten Mal.
4. Anwendungsszenarien
Es gibt ein Objekt, das viel Overhead zu erstellen hat, und das Programm nutzt es möglicherweise nicht. Angenommen, dein Programm lädt beim Start mehrere Objektinstanzen, aber nur wenige Instanzen müssen sofort ausgeführt werden. Sie können die Startleistung Ihres Programms verbessern, indem Sie die Initialisierung unnötiger Objekte verzögern, bis die notwendigen Objekte erstellt wurden.
|