首页 > 其他 > 详细

List<T> ForEach break

时间:2016-01-28 18:57:21      阅读:223      评论:0      收藏:0      [点我收藏+]

有没有方法扩展跳出 list.foreach循环?

理论上它其实不是一个循环,而是一个方法 代理调用内部循环

 
public delegate void ForEachAction<T>(T value, ref bool doBreak)
public static void ForEach<T>(this IEnumerable<T> enumerable, ForEachAction<T> action) {
    var doBreak = false;
    foreach (var cur in enumerable) {
        action(cur, ref doBreak);
        if (doBreak) {
            break;
        }
    }
}

 

 
扩展之后写法如下:
Enumerable.Range(0,10)
    .ForEach((int i,ref bool doBreak) => {
        System.Windows.MessageBox.Show(i.ToString()); 
        if ( i > 2) {doBreak = true;}
    });
 
或者选用另一种方式使用TakeWhile
Enumerable.Range(0, 10).TakeWhile(i => i <= 2).ToList().ForEach(i => MessageBox.Show(i.ToString()));

参考:http://stackoverflow.com/questions/3145563/list-foreach-break

List<T> ForEach break

原文:http://www.cnblogs.com/miralce/p/5167021.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!