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