我有一个枚举,其中包含逐渐传入的服务调用的响应。
ToList对可枚举进行操作,因为这会阻塞,直到收到所有响应,而不是在收到响应时列出它们。 如何获取可枚举的第一个元素并返回可枚举的延续?我无法使用迭代器方法,因为出现编译错误:
迭代器不能有 ref、in 或 out 参数。
我试过这段代码:
public IEnumerable<object> GetFirstAndRemainder(IEnumerable<object> enumerable, out object first)
{
first = enumerable.Take(1).FirstOrDefault();
return enumerable.Skip(1); // Second interation - unexceptable
}
// This one has a compilation error: Iterators cannot have ref, in or out parameters
public IEnumerable<object> GetFirstAndRemainder2(IEnumerable<object> enumerable, out object first)
{
var enumerator = enumerable.GetEnumerator();
enumerator.MoveNext();
first = enumerator.Current;
while (enumerator.MoveNext())
{
yield return enumerator.Current;
}
}
Run Code Online (Sandbox Code Playgroud)