在可枚举函数中打开流的开销

时间:2016-03-18 13:24:08

标签: c#

我有这段代码:

public IEnumerable<ImportRecord> Parse()
{
    var engine = new FileHelperAsyncEngine<Record>();

    using (StreamReader reader = new StreamReader(this.stream))
    using (engine.BeginReadStream(reader))
    {
        foreach (var record in engine)
        {
            yield return record.Convert(this.correlationId);
        }
    }
}

打开一个流,函数开始产生结果。

我的理解是可枚举状态机必须保持打开的流的状态导致某种开销?

是否存在不处理流的情况,例如,如果您这样做:Parse().Skip(10).Take(1);您没有枚举整个序列?我的猜测是否定的,我会假设状态机会做某事,我不确定如果有人可以详细说明那是什么东西。

0 个答案:

没有答案