lamda中where的源码分析
2013-01-10 18:45 甘超波 阅读(2265) 评论(2) 编辑 收藏 举报下面是Enumerable.Where 中简单用法
1 static void Main(string[] args) 2 { 3 List<string> list = new List<string> {"aa","abb","cc","add" }; 4 IEnumerable<string> date = list.Where<string>(t => string.Compare(t, "aa", true) == 0); 5 foreach (var d in date) 6 { 7 Console.WriteLine(d); 8 } 9 Console.ReadKey(); 10 11 }
用法很简单但是你知道里面是怎样工作的吗。
下面我们来看一下Enumerable.Where内部的实现原理是使用迭代器(对迭代器不是很熟悉的朋友请参考
迭代器的使用:http://www.cnblogs.com/zhili/archive/2012/12/02/Interator.html)
我们知道迭代器中最主要是MoveNext方法。推测出where实现代码-->
推测的原理请参考老赵的一篇文章 http://www.cnblogs.com/JeffreyZhao/archive/2010/01/26/1655520.html (很详细)
以上是自己看老赵的 人肉反编译使用yield关键字的方法,推测出来,欢迎各位来交流
目前我正在专注NLP,请立刻加微信/QQ号 546611623, 免费送你原创《NLP高级执行师》高清视频