#if Bukan Debug di c #?

127

Saya memiliki baris dalam kode vb:

#if Not Debug

yang harus saya konversi, dan saya tidak melihatnya di c #?

Apakah ada sesuatu yang setara dengannya, atau adakah solusinya?

pengguna278618
sumber

Jawaban:

239

Anda perlu menggunakan:

#if !DEBUG
    // Your code here
#endif

Atau, jika simbol Anda sebenarnya Debug

#if !Debug
    // Your code here
#endif

Dari dokumentasi tersebut , Anda dapat secara efektif memperlakukan DEBUGsebagai boolean. Jadi Anda bisa melakukan tes kompleks seperti:

#if !DEBUG || (DEBUG && SOMETHING)
CodeNaked
sumber
15

Supaya Anda terbiasa dengan apa yang terjadi di sini, #ifadalah ekspresi pra-pemrosesan, dan DEBUGsimbol kompilasi bersyarat. Berikut artikel MSDN untuk penjelasan yang lebih mendalam.

Secara default, ketika dalam konfigurasi Debug , Visual Studio akan memeriksa opsi Tetapkan konstanta DEBUG di bawah properti Build proyek. Ini berlaku untuk C # dan VB.NET. Jika ingin menggila, Anda dapat menentukan konfigurasi build baru dan menentukan simbol kompilasi Bersyarat Anda sendiri. Contoh tipikal ketika Anda melihat ini adalah:

#if DEBUG
    //Write to the console
#else
    //write to a file
#endif
Aaron Daniels
sumber
10

Untuk berjaga-jaga jika itu membantu orang lain, inilah jawaban saya.

Ini tidak akan bekerja dengan benar:

#if !DEBUG
     // My stuff here
#endif

Tapi ini berhasil:

#if (DEBUG == false)
     // My stuff here
#endif
Vaccano
sumber
3
Mungkin benar pada hari ini diposting, tetapi setidaknya untuk VS 2015! DEBUG berfungsi seperti yang diharapkan
Ole Albers
5

Saya pikir sesuatu seperti akan berhasil

 #if (DEBUG)
//Something
#else
//Something
#endif
KhanZeeshan
sumber
5
Hanya mencatat tanda kurung tidak diperlukan untuk #ifpernyataan bersyarat ini . Ini dapat ditulis#if DEBUG
atconway
0
     bool isDebugMode = false;
#if DEBUG
     isDebugMode = true;
#endif
    if (isDebugMode == false)
    {
       enter code here
    }
    else
    {
       enter code here
    }
Luiz Flavio Cavalcanti da Silv
sumber
5
Ini adalah jawaban yang buruk karena menggunakan logika run-time untuk menangani apa yang bisa dilakukan pada waktu kompilasi.
antiduh
Design time T4 templating dan sejenisnya akan membutuhkan hal semacam ini dari waktu ke waktu.
StingyJack