W System.Interactive.dll (v1.0.2521.0) z Reactive Extensions, EnumerableEx
ma zarówno metodę Memoize
jak i metodę MemoizeAll
. Dokumentacja API jest identyczna dla obu:System.Interactive: Różnica między Memoize() i MemoizeAll()?
Tworzy wyliczalnik wyliczający pierwotny wyliczalny tylko jeden raz i zapisuje wyniki w pamięci podręcznej.
Jednak metody te wyraźnie nie są identyczne. Jeśli używam Memoize
, mój wyliczalny ma wartości przy pierwszym wyliczeniu go i wydaje się pusty za drugim razem. Jeśli użyję MemoizeAll
, otrzymam zachowanie, jakiego oczekiwałbym od opisu każdej z tych metod - mogę wyliczyć wynik tyle razy, ile chcę i uzyskać za każdym razem te same wyniki, ale źródło jest wyliczane tylko jeden raz.
Czy ktoś może mi powiedzieć, jaka jest zamierzona różnica między tymi metodami? Jaki jest przypadek użycia dla Memoize
? Wydaje się to być dość bezużyteczną metodą z naprawdę mylącą dokumentacją.
Dzięki, że to rzeczywiście dobre wytłumaczenie. Być może przyszłe wersje rozszerzeń reaktywnych rozwiną opis "Memoize". –