2012-07-02 21 views
9

Ich debugging eine foreach-Schleife, die weit über 1000 Mal iterieren wird - also möchte ich nur einen Haltepunkt innerhalb der Schleife für ein bestimmtes Element zu brechen.Bedingter C# Breakpoint?

So ...

foreach(Employee employee in employees) 
{ 
//DO SOMETHING 
//BREAK HERE WHEN employee.Id == '2342' 
//DO SOMETHING ELSE 
} 

Muss ich eine If Erklärung und einige Dummy-Code in ihr schreiben und es auf diese Weise zu brechen? Das ist der einzige Weg?

Antwort

4

Hinzufügen nur zu den vorherigen Antworten. Bedingte Haltepunkte verwenden.

enter image description here

Sie den Zustand angeben können, wie unter
enter image description here

+0

Ich musste die richtige Antwort zu diesem ändern. Am beschreibendsten und relevantesten. –

+2

Mit> 1000 Iterationen ist leppies Antwort besser. Während Sie den Code dafür bearbeiten müssen, ist es viel schneller. http://stackoverflow.com/a/11290503/282143 – Eccentropy

21
if (employee.Id == '2342') Debugger.Break(); 

Alternativ können Sie einen bedingten Haltepunkt in VS festlegen, aber aus meiner Erfahrung ist das unglaublich langsam.

+0

Warum die downvote? – leppie

+0

Danke, das war außergewöhnlich hilfreich. – Azrael

2

Sie können in Visual Studio bedingte Haltepunkte verwenden.

Klicken Sie mit der rechten Maustaste auf den Haltepunkt und wählen Sie bedingte und geben Sie dann Ihre Klausel ein.

8

Wenn Sie etwas anderes als die Express-Editionen von VS verwenden, klicken Sie mit der rechten Maustaste auf den Breakpoint und klicken Sie auf Set Condition.

Persönlich würde ich diesen Ansatz verwenden, da ich es für eine schlechte Übung halte, den Code zu ändern, um ihn zu debuggen.

Andernfalls sind Sie gezwungen, es auf Ihre Weise zu tun.

3

Verwenden Sie einen VS-Debugger mit bedingten Breakpoint über die Benutzeroberfläche.

Die einfachste und schnellste weg imo.

The Ultimate Visual Studio Tips and Tricks Blog

+6

Schnellste? Es ist 1000 mal langsamer als eine Bedingung im Code. – leppie

+2

es ist * extrem * subjektiv. Ich persönlich benutze sie jeden Tag und finde viel schneller, als meinen Code mit etwas Zeitweiligem zu "beschmieren". Wenn ich es vermeiden kann, DEBUG-Code in meinen Produktionscode zu schreiben, mache ich das. – Tigran

+0

@leppie Das wusste ich nicht, es lohnt sich, darüber nachzudenken, wenn man über ein paar Millionen Datensätze läuft - danke! – Liath