Könnten Sie mir bitte mitteilen, was die genaue Unterscheidung zwischen verzögerter Ausführung und Lazy-Auswertung in C# ist? Diese beiden werden synonym verwendet.Kann jemand bitte den Unterschied mit einem Beispiel erklären?Unterschied zwischen verzögerter Ausführung und Lazy-Auswertung in C#
Antwort
In der Praxis bedeuten sie im Wesentlichen das Gleiche. Es ist jedoch vorzuziehen, den Ausdruck deferred zu verwenden.
Faule bedeutet „nicht die Arbeit machen, bis Sie absolut zu haben.“
Latente bedeutet „das Ergebnis nicht berechnen, bis der Anrufer es tatsächlich nutzt.“
In der Praxis, wenn der Anrufer das Ergebnis einer Auswertung zu verwenden entscheidet (dh beginnt durch ein IEnumerable<T>
Iterieren), das ist genau der Punkt, an dem die „Arbeit“ getan werden muss (wie beispielsweise die Ausgabe eine Abfrage an die Datenbank).
Der Begriff zurückgestellt ist genauer/beschreibend, was tatsächlich vor sich geht. Wenn ich sage, dass ich bin faul, bedeutet es, dass ich vermeiden unnötige Arbeit zu vermeiden; es ist mehrdeutig, was das wirklich impliziert. Jedoch, wenn ich sage, dass Ausführung/Auswertung ist aufgeschoben, bedeutet es im Wesentlichen, dass ich Ihnen nicht das echte Ergebnis überhaupt geben, aber eher ein Ticket, das Sie verwenden können, um das Ergebnis Anspruch auf. I defer tatsächlich ausgehen und bekommen das Ergebnis bis Sie Anspruch es.
Bitte verwenden Sie den Begriff zurückgestellt bei der Diskussion des Betreffs, wie es C# betrifft. Lazy ist eine vaguer Version.
Anmerkung: Faul Ausführungs-/Evaluierungs unterscheidet sich von lazy Lade oder in Zusammenhang mit einer Sequenz Abrufen. Lazy loading und eifrig laden sind Begriffe, die verwendet werden, um zu beschreiben, wie Elemente einer Sequenz geladen werden. Wenn eine Sequenz geladen träge ist, bedeutet dies, dass, was auch immer die Sequenz erzeugt, gerade genug funktioniert, um ein Element auf einmal zu laden. Wenn eine Sequenz eifrig geladen ist, wird die gesamte Sequenz auf einmal geladen und in einem lokalen Puffer gespeichert. Unterschiedliche Benutzungsanforderungen erfordern unterschiedliche Lademuster.
Sehr geehrte Aaronaught, Vielen Dank für Ihre ausführliche und hervorragende Erklärung ... –
Wenn jemand einen Code benötigt, um zu sehen, wie diese beiden funktionieren, bereite ich Console App, die Unterschiede zwischen ihnen zeigt: https://github.com/jakubmaguza/Lazy-vs-Deferred-vs-Normal/blob/master/src/Main.cs – titol
- 1. Unterschied zwischen Verwendung und Ausführung im Rack
- 2. Unterschied zwischen Gradle's Bewertung und Ausführung
- 3. C++ Unterschied zwischen '//' und '///'
- 4. Unterschied zwischen // und /// in C#
- 5. Was ist der Unterschied zwischen Ausführung und Auswertung?
- 6. Unterschied zwischen `% in%` und `==`
- 7. Unterschied zwischen c() und append()
- 8. Unterschied zwischen _ und selbst. in Objective-C
- 9. Unterschied zwischen Shadowing und Overriding in C#?
- 10. Unterschied zwischen Long und Int in C#?
- 11. Unterschied zwischen "var" und "object" in C#
- 12. Unterschied zwischen Typ und Klasse in C++?
- 13. Unterschied zwischen Vorwärts- und Rückwärtsvergleich in C#
- 14. Unterschied zwischen Erweiterungsmethoden und Methoden in C#
- 15. Unterschied zwischen map [] und map.at in C++?
- 16. Unterschied zwischen Byte und Char in C
- 17. Unterschied zwischen Iterator und Array in C#
- 18. Unterschied zwischen + und - Methoden in Objective-c
- 19. Unterschied zwischen char * und char [] in C
- 20. Was ist der generelle Unterschied zwischen Superscalar und OoO-Ausführung?
- 21. Verzögerter Start eines Threads in C++ 11
- 22. Unterschied in SHA-Hashes zwischen Ruby und C#
- 23. C++ Unterschied zwischen:, :: Operatoren
- 24. Unterschied der Enum zwischen Java und C++?
- 25. Unterschied zwischen C++ Zufallszahlengenerierung und Python
- 26. Unterschied zwischen Vista und XP [C]
- 27. Unterschied zwischen String.Empty und ""
- 28. Unterschied zwischen gleich (LINQ) und == (C#) Operatoren?
- 29. C# Unterschied zwischen Gießen und als?
- 30. C++ Unterschied zwischen 0 und 0.0
Duplizieren, von einem Benutzer mit dem gleichen Namen von http://stackoverflow.com/questions/2515796/2515920 –
Klicken Sie auf Jon Skeets Blogpost zu dem Thema: [http://msmvps.com/blogs/jon_skeet /archive/2010/03/25/just-how-lazy-are-you.aspx](http://msmvps.com/blogs/jon_skeet/archive/2010/03/25/just-how-lazy-are- Sie.aspx) – Jan
In Ordnung, Sie gewinnen. Langsam/faul ich :) – Jan