Joe*_*ler 7 c# system.reactive system.interactive
在Reactive Extensions的System.Interactive.dll(v1.0.2521.0)中,EnumerableEx同时具有Memoize方法和MemoizeAll方法.API文档对于它们都是相同的:
创建一个枚举枚举原始枚举的枚举,并缓存其结果.
但是,这些方法显然不相同.如果我使用Memoize,我的枚举在第一次枚举它时会有值,并且第二次似乎是空的.如果我使用MemoizeAll那么我得到了我对任何一种方法的描述所期望的行为 - 我可以根据需要多次枚举结果并且每次都得到相同的结果,但源只被枚举一次.
谁能告诉我这些方法之间的预期差异是什么?用例是Memoize什么?这似乎是一个相当无用的方法,真正令人困惑的文档.
简单地说,MemoizeAll只缓存你实际使用的项目 - 但它永远保留所有缓存的项目. Memoize立即缓存项目,但仅限于指定的缓冲区大小.这使您可以更有效地使用内存等,但如果您了解可枚举源的所有使用者将如何使用它,您只想使用后者.
这篇博客文章的不同之处有一个很好的解释:http: //bartdesmet.net/blogs/bart/archive/2010/01/07/more-linq-with-system-interactive-functional-fun-and-taming -侧,effects.aspx
| 归档时间: |
|
| 查看次数: |
1483 次 |
| 最近记录: |