In System.Interactive.dll (v1.0.2521.0) von reaktiven Erweiterungen hat EnumerableEx
sowohl eine Memoize
Methode als auch eine MemoizeAll
Methode. Die API-Dokumentation ist für beide identisch:System.Interactive: Unterschied zwischen Memoize() und MemoizeAll()?
Erstellt ein Enumerable, das das ursprüngliche Enumerable nur einmal aufzählt und seine Ergebnisse zwischenspeichert.
Diese Methoden sind jedoch eindeutig nicht identisch. Wenn ich Memoize
verwende, hat mein Enumerable Werte, wenn ich es das erste Mal aufzähle, und scheint das zweite Mal leer zu sein. Wenn ich MemoizeAll
verwende, dann bekomme ich das Verhalten, das ich von der Beschreibung beider Methoden erwarten würde - ich kann das Ergebnis so oft wie ich möchte aufzählen und jedes Mal die gleichen Ergebnisse erhalten, aber die Quelle wird nur einmal gezählt.
Kann mir jemand sagen, was der beabsichtigte Unterschied zwischen diesen Methoden ist? Was ist der Anwendungsfall für Memoize
? Es scheint eine ziemlich nutzlose Methode mit wirklich verwirrender Dokumentation zu sein.
Danke, das ist in der Tat eine gute Erklärung. Vielleicht werden zukünftige Versionen von Reactive Extensions die Beschreibung von 'Memoize' erweitern. –