常见的Lambda表达式引起的闭包问题
摘要:
以下代码的原意是想找出list中满足Name字段包含t, Remark字段包含mark的数据代码不过实际情况是data中间一条记录都没有而hardcode算出来的data2中有3条记录原因如下: 这个lambda表达式 Where(p=p.Name.Contains(val)) , 实际上只是保留了一个指向函数外部的val的引用 , 他这个时候并没有把val的真实的值拷贝进来 真正去读取val值的时候是 lambda.ToList() 这个时候才真正执行lambda表达式取数据,过滤数据 ,也是这个时候才去读取val的值 而在foreach的第二次操作的时候 val的值被覆盖mark了 阅读全文
posted @ 2011-01-07 14:42 听说读写 阅读(1874) 评论(0) 推荐(0) 编辑