/// <summary> /// 分别遍历一个迭代器的第一个元素和其他元素 /// </summary> /// <typeparam name="Obj">迭代器的元素类型</typeparam> /// <param name="list">待遍历的迭代器</param> /// <param name="first">用来遍历第一个元素的委托, /// 它的第一个参数是待遍历的元素,第二个参数就是<paramref name="other"/>的柯里化形式,参数传入第一个元素</param> /// <param name="other">用来遍历其他元素的委托</param> public static void ForEachSplit <Obj>(this IEnumerable <Obj> list, Action <Obj, Action> first, Action <Obj> other) { var(First, Other, HasElements) = list.First(false); if (HasElements) { first(First, () => other(First)); Other.ForEach(other); } }