Encontré algo bastante extraño (¡creo!). Si trato de poner un punto de interrupción en el método yes(), nunca pausará el programa cuando ejecute la función. Si trato de hacer lo mismo con cualquier otra línea de código, funcionará tal como se esperaba. ¿Es un error, o hay algo que me está escapando?El depurador no llega al punto de interrupción
El filtro devolverá los 2 objetos, todo parece funcionar como se espera excepto el depurador.
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;
}
}
Recuerde, el resultado de un método de consulta como Where es _un objeto que representa la consulta_. No son los _resultados_ de la consulta. Es la consulta _sí mismo_. No es hasta que dices "oye pregunta, ¿cuáles son tus resultados?" que la consulta realmente se ejecuta. –
Ahora puede responder este pequeño acertijo: Problema: http://blogs.msdn.com/ericlippert/archive/2007/09/05/psychic-debugging-part-one.aspx Solución: http: //blogs.msdn. com/ericlippert/archive/2007/09/06/psychic-debugging-part-two.aspx –