392 Stimmen

Wann sollte ich Lazy<T> verwenden?

Ich fand diesen Artikel über Lazy : Faulheit in C# 4.0 - Faulheit

Was ist das beste Verfahren, um mit Lazy Objects die beste Leistung zu erzielen? Kann mir jemand eine praktische Anwendung in einer realen Applikation zeigen? Mit anderen Worten, wann sollte ich sie verwenden?

15voto

Vasea Punkte 4843

Von MSDN:

Verwenden Sie eine Instanz von Lazy, um die Erstellung eines großen oder ressourcenintensiven Objekts oder die Ausführung einer ressourcenintensiven Aufgabe zu verschieben, insbesondere wenn eine solche Erstellung oder Ausführung nicht während der Lebensdauer des Programms erfolgen könnte.

Zusätzlich zur Antwort von James Michael Hare bietet Lazy eine thread-sichere Initialisierung Ihres Wertes. Werfen Sie einen Blick auf LazyThreadSafetyMode Aufzählung MSDN-Eintrag, der verschiedene Arten von Thread-Sicherheitsmodi für diese Klasse beschreibt.

-5voto

Tufy Duck Punkte 84

Sie sollten sich dieses Beispiel ansehen, um die Architektur von Lazy Loading zu verstehen

private readonly Lazy<List<int>> list = new Lazy<List<int>>(() =>
{
    List<int> configList = new List<int>(Thread.CurrentThread.ManagedThreadId);
    return configList;
});
public void Execute()
{
    list.Value.Add(0);
    if (list.IsValueCreated)
    {
        list.Value.Add(1);
        list.Value.Add(2);

        foreach (var item in list.Value)
        {
            Console.WriteLine(item);
        }
    }
    else
    {
        Console.WriteLine("Value not created");
    }
}

--> Ausgabe --> 0 1 2

aber wenn dieser Code nicht schreiben "list.Value.Add(0);"

Ausgabe --> Wert nicht erstellt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X