2010-02-19 25 views
18

voglio impostare un punto di interruzione su una determinata linea di codice C# quando qualche altra variabile è pari ad un valore specifico, dico:punto di interruzione condizionale in Visual Studio

MyStringVariable == "LKOH" 

Come posso fare questo?

Ho provato a fare clic con il pulsante destro sull'icona di punto di interruzione -> Condizione e quindi ho digitato MyStringVariable == "LKOH" e Visual Studio ha detto che non può valutarlo.

+0

Io normalmente modificare il codice e iniettare codice come se (MyStringVariable = "LKOH") { int a = 1; // codice fittizio per impostare il punto di interruzione } –

+0

MODIFICA - modifica = a ==. Questo era solo un errore di battitura. Naturalmente ho usato == nel debugger –

+0

Oh un altro indizio. In realtà sto usando una proprietà. La mia vera espressione è Exchange.Name == "LKOH", dove Nome è proprietà. Può essere che il debugger non funzioni con le proprietà? –

risposta

25

codice di esempio:

static void Main(string[] args) { 
    string myvar; 
    for (int ix = 0; ix < 10; ++ix) { 
    if (ix == 5) myvar = "bar"; else myvar = "foo"; 
    } // <=== Set breakpoint here 
} 

Condizione: myvar == "bar"

funziona bene.

7

Proprio come nel codice, è necessario utilizzare:

MyStringVariable == "LKOH" 

Il doppio uguale è la chiave. Senza di esso, sta dicendo che non può valutare perché la tua espressione non valuta un valore booleano.

1

La variabile che si sta verificando deve essere inclusa nell'ambito del punto di interruzione.

var x = "xxx"; 
{ 
    var y = "yyy"; 
} 

brak(); // x is in scope, y isn't 
5

Si dovrebbe essere in grado di fare questo lavoro. Stai usando il nome dell'istanza di Exchange nella condizione? La condizione dovrebbe essere qualcosa come myExchange.Name == "LKOH" non Exchange.Name == "LKOH".

A proposito, utilizzando l'operatore di assegnazione anziché l'operatore di uguaglianza == funzionerà ma imposterà la proprietà e consumerà 1/2 ora del proprio tempo per capire cosa diavolo sta succedendo. Ho fatto questo errore solo ieri.

1

Nel mio caso, ho dimenticato che stavo eseguendo il debug di un'applicazione VB.

In uguaglianza VB è = non == come molte altre lingue, così il mio punto di interruzione condizionale doveva essere myString = "someValue" non myString == "someValue"

Problemi correlati