有没有一种通过一次性资源产生收益的适当方法?返回的对象是 IDisposable,但它正在迭代的元素是。
这是一个例子:
public static IEnumerable<T> Fetch(IEnumerable<Guid> ids)
{
using (var client = new CouchbaseClient())
{
yield return ids.Select(s => s.ToString());
}
}
现在,调用它不会释放using
获得的资源。我知道我可以只返回一个 ToList 并立即将其全部返回,但是有没有办法“正确”处理这个问题,或者我是否必须在 IDisposable 资源上保留一个选项卡并在完成后手动处理它?