#if Non eseguire il debug in c #?


127

Ho la riga nel codice vb:

#if Not Debug

quale devo convertire e non lo vedo in c #?

C'è qualcosa di equivalente o c'è qualche soluzione alternativa?

Risposte:


239

Dovresti usare:

#if !DEBUG
    // Your code here
#endif

Oppure, se il tuo simbolo è effettivamente Debug

#if !Debug
    // Your code here
#endif

Dalla documentazione , puoi trattare efficacemente DEBUGcome booleano. Quindi puoi eseguire test complessi come:

#if !DEBUG || (DEBUG && SOMETHING)

15

Solo così hai familiarità con ciò che sta succedendo qui, #ifè un'espressione di pre-elaborazione ed DEBUGè un simbolo di compilazione condizionale. Ecco un articolo di MSDN per una spiegazione più approfondita.

Per impostazione predefinita, nella configurazione di debug , Visual Studio selezionerà l' opzione Definisci costante DEBUG nelle proprietà di compilazione del progetto. Questo vale sia per C # che per VB.NET. Se vuoi impazzire, puoi definire nuove configurazioni di build e definire i tuoi simboli di compilazione condizionale. L'esempio tipico quando vedi questo però è:

#if DEBUG
    //Write to the console
#else
    //write to a file
#endif

10

Nel caso in cui aiuti qualcun altro, ecco la mia risposta.

Questo non funzionerebbe bene:

#if !DEBUG
     // My stuff here
#endif

Ma questo ha funzionato:

#if (DEBUG == false)
     // My stuff here
#endif

3
Potrebbe essere stato giusto il giorno in cui è stato pubblicato, ma almeno per VS 2015! DEBUG funziona come previsto
Ole Albers,

5

Penso che qualcosa di simile funzionerà

 #if (DEBUG)
//Something
#else
//Something
#endif

5
La semplice annotazione delle parentesi non è richiesta per queste #ifistruzioni condizionali . Può essere scritto#if DEBUG
atconway

0
     bool isDebugMode = false;
#if DEBUG
     isDebugMode = true;
#endif
    if (isDebugMode == false)
    {
       enter code here
    }
    else
    {
       enter code here
    }

5
Questa è una cattiva risposta poiché utilizza la logica di runtime per gestire ciò che potrebbe essere fatto in fase di compilazione.
antiduh

I modelli T4 in fase di progettazione e simili avranno bisogno di questo genere di cose di tanto in tanto.
StingyJack
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.