首页 新闻 会员 周边 捐助

C# List<int>

0
[已解决问题] 解决于 2013-06-04 17:14
var numbers = new List<int>();
numbers.Add(1);
var query = numbers.Select(n=>n*10);
numbers.Add(2);
//foreach console 10,20

大侠们,遍历上面的代码为什么输出 10和20啊,求大侠解释.

码半仙的主页 码半仙 | 初学一级 | 园豆:7
提问于:2013-05-20 15:56
< >
分享
最佳答案
0

这是延迟查询造成的。query对象,实质是一个查询语句,而不是查询后的结果,在遍历的时候执行,执行query保存的查询语句。此时numbers已经Add(2)了,所以会输出两个10和20.

奖励园豆:5
幻天芒 | 高人七级 |园豆:37207 | 2013-05-23 22:57
其他回答(3)
-1

....numbers.select 只是得到查询语句,是没有执行的嘛...

S-Lyy | 园豆:257 (菜鸟二级) | 2013-05-20 16:01

在numbers.Add(2);

才会执行numbers.Select(n=>n*10);

?

支持(0) 反对(0) 码半仙 | 园豆:7 (初学一级) | 2013-05-20 16:04
1

看你是foreach哪个对象:

numbers :则输出 1,2
query :则输出10,20
Set sail | 园豆:540 (小虾三级) | 2013-05-20 17:21
0

numbers.select 只是得到查询语句,是没有执行

程序诗人 | 园豆:313 (菜鸟二级) | 2013-06-04 15:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册