#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?

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)

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

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

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

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
    }

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.