有人可以解释为什么下面的C#行与下面的foeach块的行为不一样吗?
- string [] strs = {"asdf","asd2","asdf2"};
- strs.Select(str => doSomething(str));
- foreach(string str in strs){
- doSomething(str);
- }
我在doSomething()中放置了一个断点,它不会在Select中触发,但它与foreach一起触发.
TIA
解决方法
在使用ToList(),ToArray()等将其转换为Enumarable之前,不会处理Linq查询.
顺便说一句,相当于你的foreach语句是这样的:
- strs.ForEach(doSomething);
- strs.ToList().ForEach(doSomething);
要么
- Array.ForEach(strs,doSomething);