Znalazłem coś bardzo dziwnego (chyba!). Jeśli spróbuję umieścić punkt przerwania w metodzie yes(), to nigdy nie wstrzyma programu podczas wykonywania funkcji. Jeśli spróbuję zrobić to samo z każdą inną linią kodu, będzie działać tak, jak powinien. Czy to błąd, czy jest coś, co mi ucieka?Debugger nie trafił w pułapkę
Filtr zwróci 2 obiekty, wszystko wydaje się działać zgodnie z oczekiwaniami, z wyjątkiem debuggera.
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;
}
}
Zapamiętaj wynik metody zapytania, np. Gdzie jest _an obiekt reprezentujący zapytanie_. Nie jest to _ wynikami zapytania. To jest zapytanie. Dopóki nie powiesz "hej zapytanie, jakie są twoje wyniki?" że kwerenda faktycznie jest wykonywana. –
Możesz teraz odpowiedzieć na tę małą zagadkę: Problem: http://blogs.msdn.com/ericlippert/archive/2007/09/05/psychic-debugging-part-one.aspx Rozwiązanie: http: //blogs.msdn. com/ericlippert/archive/2007/09/06/psychic-debugging-part-two.aspx –