Jor*_*nco 7 c# debugging delegates breakpoints list
我觉得很奇怪(我想!).如果我尝试在yes()方法中放置一个断点,它将永远不会在执行该函数时暂停程序.如果我尝试对任何其他代码行执行相同操作,它将按预期工作.这是一个错误,还是有什么东西逃脱了我?
过滤器将返回2个对象,除调试器外,一切似乎都按预期工作.
private void Form1_Load(object sender, EventArgs e) {
List<LOL> list = new List<LOL>();
list.Add(new LOL());
list.Add(new LOL());
IEnumerable<LOL> filter = list.Where(
delegate(LOL lol) {
return lol.yes();
}
);
string l = ""; <------this is hit by the debugger
}
class LOL {
public bool yes() {
bool ret = true; <---------this is NOT hit by the debugger
return ret;
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*upp 17
Enumerable.Lhere是一个惰性运算符 - 直到你调用通过where返回的IEnumerable(即调用它上面的.ToList()),你的函数才会被调用.
尝试将代码更改为此代码,看看它是否被调用:
....
IEnumerable<LOL> filter = list.Where(
delegate(LOL lol) {
return lol.yes();
}
).ToList();
string l = "";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3963 次 |
| 最近记录: |