请问大神这个C#方法是什么意思

2020-10-22 17:40发布

 return _(); IEnumerable<TSource> _() {
    foreach (var element in source)
    {
        var success = predicate(element);
        if (!success)
            throw errorSelector?.Invoke(element) ?? new InvalidOperationException("Sequence contains an invalid item.");
        yield return element;
    }
}
return _(); IEnumerable<TSource> _() 这个什么意思?

标签:
3条回答
Ridiculous、
2楼-- · 2020-10-22 17:57

这可读性也太差了点。第一次见

查看更多
贪生不怕死
3楼-- · 2020-10-22 17:58

就是local function的写法, 等同

IEnumerable<TSource> _() {
    foreach (var element in source)
    {
        var success = predicate(element);
        if (!success)
            throw errorSelector?.Invoke(element) ?? new InvalidOperationException("Sequence contains an invalid item.");
        yield return element;
    }
}

return _(); 
查看更多
【Aperson】
4楼-- · 2020-10-22 18:02
yield return element;

这个的返回IEnumerable类型的泛型集合,该集合是属于那种Lazy模式,只有对这个集合进行循环时才执行该这个方法,平时在内存中不存在任何元素

查看更多
登录 后发表回答