【发布时间】:2009-11-17 19:24:12
【问题描述】:
Linq 允许您在查询表达式中创建新对象。当您有封装列表生成的类时,这很有用。我想知道您如何处理创建的需要它的对象?
例子:
class Generator
{
public IEnumerable<int> Gen(int size)
{
return Enumerable.Range(0, size);
}
}
class bar
{
public void doit()
{
var foo =
from r in Enumerable.Range(1, 3)
from g in new Generator().Gen(r)
select g;
}
}
这将创建 3 个生成器对象,这些对象将在某个时候被垃圾收集。如果 Generator 是 IDisposable,我将如何获得 Dispose() 调用?
【问题讨论】:
-
很好的问题。我有同样的问题,只是我使用了 let 关键字。