#if Не налагоджувати в c #?


127

У мене є рядок у vb-коді:

#if Not Debug

який я повинен конвертувати, а я не бачу цього в c #?

Чи є щось еквівалентне цьому чи є якесь вирішення?

Відповіді:


239

Вам потрібно буде використовувати:

#if !DEBUG
    // Your code here
#endif

Або, якщо ваш символ є насправді Debug

#if !Debug
    // Your code here
#endif

З документації можна ефективно ставитися DEBUGяк до булева. Таким чином, ви можете робити складні тести, такі як:

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

15

Просто ви знайомі з тим, що тут відбувається, #ifє попередньою обробкою і DEBUGє умовним символом компіляції. Ось стаття MSDN для більш поглибленого пояснення.

За замовчуванням у налаштуваннях налагодження Visual Studio перевірить параметр « Визначити константу DEBUG» під властивостями «Будувати проект». Це стосується як C #, так і VB.NET. Якщо ви хочете зійти з розуму, ви можете визначити нові конфігурації збірки та визначити власні умовні символи компіляції. Типовий приклад, коли ви бачите це:

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

10

На всякий випадок, коли це допомагає комусь іншому, ось моя відповідь.

Це не буде правильно:

#if !DEBUG
     // My stuff here
#endif

Але це спрацювало:

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

3
Можливо, у той день, коли це було опубліковано, могли бути правильні, але принаймні для VS 2015! ДЕБУГ працює як слід
Оле Альберс

5

Я думаю, щось подібне спрацює

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

5
Лише зазначаючи, що дужки не потрібні для цих умовних #ifвисловлювань. Це можна написати#if DEBUG
atconway

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

5
Це погана відповідь, оскільки вона використовує логіку виконання часу для обробки того, що можна зробити під час компіляції.
antiduh

Час проектування T4, який має шаблони тощо, потребуватиме таких матеріалів час від часу.
StingyJack
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.