2010-06-07 17 views

Respuesta

22

#if es una pre-processor command.

Su uso más común (que algunos podrían decir que es un abuso) es tener código que sólo compila en modo de depuración:

#if DEBUG 
    Console.WriteLine("Here"); 
#endif 

Un muy buen uso (como StingyJack points out) es para permitir una fácil depuración de un servicio de 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 
} 

Source

Esto significa que la ejecución de modo de liberación comenzará el servicio como se esperaba, w Si se ejecuta en modo de depuración, podrá depurar el código.

+1

mejor uso de # si eso he visto .... http://www.codeproject.com/KB/dotnet/DebugWinServices.aspx – StingyJack

+0

@StingyJack - Lo he usado yo mismo, es un muy buen uso. – ChrisF

4

"Cuando el compilador de C# se encuentra con una directiva #if, seguido finalmente por una directiva #endif, se compilará el código entre las directivas solo si el símbolo especificado está definido "

Aquí está el enlace MSDN.

0

#if es una directiva de compilación, por ejemplo, puede #define test

y más tarde en el código puede probar #ifdef test bloque de código compilación con #ifdef

0

#if ha perdido mucho en comparación con sus antepasados ​​- c o C++. hoy en día utilizo #if por sólo dos escenarios

1) usarlo para activar el código de depuración o no depurar

#if DEBUG 
    // code inside this block will run in debug mode. 
#endif 

2) utilizarlo para apagar rápidamente código

#if false 
    // all the code inside here are turned off.. 
#endi 
Cuestiones relacionadas