Подтвердить что ты не робот

Цель С# # "синтаксис

Я немного смущен синтаксисом "фунт if" или #if, который я вижу, когда смотрю на некоторые классы.

Например:

#if someConstant == someNumber
  do something
#elif
  etc

против

if (someConstant == someNumber) 
   do something
else if {
   do more stuff
}

какая разница и зачем использовать #if?

4b9b3361

Ответ 1

#if и т.д. являются препроцессорными директивами. Это означает, что они рассматриваются перед компиляцией, а не во время выполнения. Это может быть полезно, например, при определении поведения отладки, которое компилируется только при создании для debug, а не release:

#if DEBUG
    #define ISRelease(x) [x release]
#else
    #define ISRelease(x) [x release], x = nil
#endif

(Код предоставлен Jeff LaMarche blog.)

Таким образом, вам не нужно проходить весь код приложения непосредственно перед отправкой приложения и удалением нагрузки отладочного кода. Это всего лишь один маленький пример использования этих директив.

Ответ 2

#if - это директива препроцессора .

if является конструкцией языка .

Разница заключается в том, как скомпилирована окончательная программа. Когда вы используете #if, результатом этой директивы является то, что конечная программа будет содержать эти строки. Когда вы используете конструкцию языка, выражение, которое передается конструкции, будет оцениваться во время выполнения, а не время компиляции.

Ответ 3

Предыдущие ответы охватывают #if обычаи от отладки до терминологии и пропускают еще одно общее использование: #if используется для комментирования больших фрагментов кода. Это полезно, когда программистам необходимо избавиться от чего-то, что уже содержит комментарии.

#if 0
  a lof of C code with /* style */ comments included
#endif

Я использую это много. Преимущество над любым другим стилем #if и комментариями - на самом деле это не волнует большую часть разбитого синтаксиса внутри него.