用 IEnumerable 本來就是為遍歷方便,可是現(xiàn)在只有兩個(gè)選擇:1. foreach,示例代碼如下:IEnumerable<string> strs = new string[] { "a", "b" };foreach (var str in strs)
{
Console.WriteLine(str);
}缺點(diǎn):代碼不簡(jiǎn)潔,不支持lamda2. 先ToList,再ForEach,示例代碼如下:IEnumerable<string> strs = new string[] { "a", "b" };
strs.ToList().ForEach(str => Console.WriteLine(str));缺點(diǎn):ToList有性能代價(jià)。如果 IEnumerable 直接提供 ForEach 操作,就可以這樣:IEnumerable<string> strs = new string[] { "a", "b" };
strs.ForEach(str => Console.WriteLine(str));現(xiàn)在只能通過自己用擴(kuò)展辦法實(shí)現(xiàn):namespace System.Collections.Generic
{ public static class IEnumerableExtension
{ public static void ForEach<T>(this IEnumerable<T> enumeration, Action<T> action)
{ foreach (var item in enumeration)
{
action(item);
}
}
}
}我的問題是:微軟為什么不考慮到這一點(diǎn),給IEnumerable增加 ForEach 操作?為什么 List 有 ForEach 操作,而 IEnumerable 卻沒有,IEnumerable 更需要它,而且 List 實(shí)現(xiàn)了 IEnumerable ?
IEnumerable 為什么不提供支持 ForEach 操作
料青山看我應(yīng)如是
2018-08-02 09:10:08