En System.Interactive.dll (v1.0.2521.0) de Reactive Extensions, EnumerableEx
tiene un método Memoize
y un método MemoizeAll
. La documentación de API es idéntica para ambos:System.Interactive: ¿diferencia entre Memoize() y MemoizeAll()?
Crea un enumerable que enumera el enumerable original solo una vez y almacena sus resultados en caché.
Sin embargo, estos métodos son claramente no idénticos. Si uso Memoize
, mi enumerable tiene valores la primera vez que lo enumero, y parece estar vacío la segunda vez. Si uso MemoizeAll
, entonces obtengo el comportamiento que esperaría de la descripción de cualquiera de los métodos: puedo enumerar el resultado tantas veces como quiera y obtengo los mismos resultados cada vez, pero la fuente solo se enumera una vez.
¿Alguien me puede decir cuál es la diferencia entre estos métodos? ¿Cuál es el caso de uso para Memoize
? Parece un método bastante inútil con documentación realmente confusa.
Gracias, eso es de hecho una buena explicación. Tal vez las versiones futuras de Reactive Extensions ampliarán la descripción de 'Memoize'. –