Der Debugger trifft den Haltepunkt nicht

7

Ich habe etwas ziemlich merkwürdiges gefunden (denke ich!). Wenn ich versuche, einen Haltepunkt in die yes () -Methode zu setzen, wird das Programm niemals angehalten, wenn es die Funktion ausführt. Wenn ich versuche, dasselbe mit jeder anderen Codezeile zu tun, wird es wie erwartet funktionieren. Ist es ein Fehler oder gibt es etwas, das mir entgeht?

Der Filter wird die 2 Objekte zurückgeben, alles scheint wie erwartet zu funktionieren, außer dem Debugger.

%Vor%     
Jorge Branco 23.06.2009, 03:30
quelle

4 Antworten

16

Enumerable.Where ist ein träger Operator - bis Sie etwas aufrufen, das IEnumerable durch where (dh Aufruf von .ToList () darauf) durchläuft, wird Ihre Funktion nicht aufgerufen.

Versuchen Sie, Ihren Code zu ändern und zu sehen, ob er aufgerufen wird:

%Vor%     
Jonathan Rupp 23.06.2009 03:36
quelle
2

Sie müssen die Liste materialisieren. Fügen Sie ein ...

hinzu %Vor%

... nach der Deklaration und Sie werden Ihren Haltepunkt treffen. Über die beste Diskussion, die ich gesehen habe, ist hier . Es macht faule Bewertung viel besser Gerechtigkeit, als ich tun könnte.

    
JP Alioto 23.06.2009 03:36
quelle
2

Wie andere schon gesagt haben, haben Sie gerade Ihre Kriterien definiert, aber nicht zur Ausführung aufgefordert. Das nennt man faules Laden (Leute, korrigiert mich, wenn ich falsch liege).

Führen Sie eine foreach-Schleife auf dem Filter aus, um zu sehen, was passiert.

    
shahkalpesh 23.06.2009 03:38
quelle
2

Jonathan hat Recht.

Versuchen Sie, diese Konsolenanwendung auszuführen, und legen Sie dort Haltepunkte fest, um sie deutlich zu sehen.

%Vor%     
Colin Cochrane 23.06.2009 03:58
quelle