Svi*_*ish 6 c# ienumerable ienumerator idisposable using-statement
我很想知道这个SingleOrFallback方法是如何在MoreLinq中实现的,并发现了一些我以前没见过的东西:
public static T SingleOrFallback<T>(this IEnumerable<T> source, Func<T> fallback)
{
source.ThrowIfNull("source");
fallback.ThrowIfNull("fallback");
using (IEnumerator<T> iterator = source.GetEnumerator())
{
if (!iterator.MoveNext())
{
return fallback();
}
T first = iterator.Current;
if (iterator.MoveNext())
{
throw new InvalidOperationException();
}
return first;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么IEnumerator<T>在using声明中?在使用foreachon 时也应该考虑这个问题IEnumerable<T>吗?
附带问题:这种方法究竟做了什么?每当源序列不包含一个项时,它是否返回后备项?
| 归档时间: |
|
| 查看次数: |
2589 次 |
| 最近记录: |