2010-06-07 55 views

Trả lời

22

#if là một pre-processor command.

Nó sử dụng phổ biến nhất (mà một số có thể nói là một sự lạm dụng) là phải có mã mà chỉ biên dịch trong chế độ gỡ lỗi:

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

Một sử dụng rất tốt (như StingyJack points out) là cho phép gỡ lỗi dễ dàng một dịch vụ 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

này có nghĩa là chạy chế độ phát hành sẽ bắt đầu dịch vụ như mong đợi, w hile đang chạy trong chế độ gỡ lỗi sẽ cho phép bạn thực sự gỡ lỗi mã.

+1

sử dụng tốt nhất của # nếu tôi đã thấy .... http://www.codeproject.com/KB/dotnet/DebugWinServices.aspx – StingyJack

+0

@StingyJack - Tôi đã sử dụng bản thân mình, nó là một cách sử dụng rất tốt. – ChrisF

4

"Khi trình biên dịch C# gặp một chỉ thị #if, theo sau là chỉ thị #endif, nó sẽ biên dịch mã giữa các chỉ thị chỉ khi biểu tượng được chỉ định được xác định "

Đây là liên kết MSDN.

0

#if là một chỉ thị biên dịch, ví dụ bạn có thể #define test

và sau đó trong mã bạn có thể kiểm tra #ifdef test khối mã biên dịch với #ifdef

0

#if đã mất rất nhiều so với tổ tiên của nó - c hoặc C++. hiện nay tôi sử dụng #if cho chỉ có hai kịch bản

1) sử dụng nó để kích hoạt tính năng mã cho gỡ lỗi hoặc không gỡ lỗi

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

2) sử dụng nó để nhanh chóng tắt đang

#if false 
    // all the code inside here are turned off.. 
#endi 
Các vấn đề liên quan