Наиболее распространенное использование (что некоторые могут назвать злоупотреблением) - это иметь код, который компилируется только в режиме отладки:
#if DEBUG
Console.WriteLine("Here");
#endif
Одно очень хорошее применение (как указывает StingyJack ) - позволить легко отладка службы Windows:
static void Main()
{
#if (!DEBUG)
System.ServiceProcess.ServiceBase[] ServicesToRun;
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
#else
// Debug code: this allows the process to run as a non-service.
// It will kick off the service start point, but never kill it.
// Shut down the debugger to exit
Service1 service = new Service1();
service.<Your Service's Primary Method Here>();
// Put a breakpoint on the following line to always catch
// your service when it has finished its work
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
#endif
}
Это означает, что запущенный режим выпуска запустит службу, как ожидалось, а работа в режиме отладки позволит вам фактически отладить код.
«Когда компилятор C # встречает директиву #if, за которым в конечном итоге следует директива #endif, код между директивами будет компилироваться только в том случае, если указанный символ определен »
Вот ссылка MSDN .
#if
потерял так много по сравнению со своими предками - c или C ++. в настоящее время я использую #if
только для двух сценариев
1) используйте его, чтобы включить код для отладки или не выполнять отладку
#if DEBUG
// code inside this block will run in debug mode.
#endif
2) использовать его для быстрого отключения кода
#if false
// all the code inside here are turned off..
#endi
#if (Справочник по C #) - директива компилятора. См. Статью MSDN для получения дополнительной информации.
#if
- это директива компилятора, например, вы можете #define test
и позже в коде вы можете протестировать #ifdef test
скомпилировать блок кода с помощью #ifdef
Он используется для директив препроцессора, см. Здесь http://msdn.microsoft.com/en-us/library/4y6tbswk (v = VS.71) .aspx