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> _() 这个什么意思?
yield return element;
这个的返回IEnumerable类型的泛型集合,该集合是属于那种Lazy模式,只有对这个集合进行循环时才执行该这个方法,平时在内存中不存在任何元素
就是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 _();
这可读性也太差了点。第一次见