#if Not Debug in c #?

127

У меня есть строка в коде vb:

#if Not Debug

который я должен преобразовать, а я не вижу его в C #?

Есть ли что-то эквивалентное или есть какое-то обходное решение?

user278618
источник

Ответы:

239

Вам нужно будет использовать:

#if !DEBUG
    // Your code here
#endif

Или, если ваш символ действительно Debug

#if !Debug
    // Your code here
#endif

Из документации вы можете эффективно рассматривать DEBUGкак логическое значение. Таким образом, вы можете проводить сложные тесты, например:

#if !DEBUG || (DEBUG && SOMETHING)
CodeNaked
источник
15

Чтобы вы знали, что здесь происходит, #ifэто выражение предварительной обработки и DEBUGсимвол условной компиляции. Вот статья MSDN для более подробного объяснения.

По умолчанию в конфигурации отладки Visual Studio проверяет параметр « Определить константу отладки » в свойствах сборки проекта. Это касается как 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
Vaccano
источник
3
Возможно, это было как раз в тот день, когда это было опубликовано, но, по крайней мере, для VS 2015! DEBUG работает, как ожидалось
Оле Альберс
5

Я думаю что-то вроде сработает

 #if (DEBUG)
//Something
#else
//Something
#endif
KhanZeeshan
источник
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