2011-08-30 38 views
86

我在VB代碼行:我必須轉換#if在c#中未調試?

#if Not Debug 

,我沒有看到它在C#中?

有沒有相當於它的東西,還是有一些解決方法?

回答

156

您可能需要使用:

#if !DEBUG 
    // Your code here 
#endif 

或者,如果你的符號其實Debug

#if !Debug 
    // Your code here 
#endif 

是從documentation,你可以將DEBUG作爲布爾值來有效對待。所以,你可以做複雜的測試,如:

#if !DEBUG || (DEBUG && SOMETHING) 
5

我認爲像將工作

#if (DEBUG) 
//Something 
#else 
//Something 
#endif 
+4

就注意到括號並不需要這種條件'#if'語句。它可以寫成'#如果DEBUG' – atconway

12

只要你所熟悉的東西是怎麼回事,#if是預處理表達,DEBUG是條件編譯符號。 Here's an MSDN article作更深入的解釋。

默認情況下,當調試配置,Visual Studio將檢查定義下的項目的生成屬性DEBUG常數選項。這適用於C#和VB.NET。如果你想瘋了,你可以定義新的構建配置並定義你自己的條件編譯符號。當你看到這雖然典型的例子是:

#if DEBUG 
    //Write to the console 
#else 
    //write to a file 
#endif 
4

萬一它可以幫助別人了,這裏就是我的回答。

這將無法正常工作:

#if !DEBUG 
    // My stuff here 
#endif 

但這並工作:

#if (DEBUG == false) 
    // My stuff here 
#endif 
+3

也許是正確的,在此張貼了一天,但至少VS 2015年!DEBUG確實如預期 –

0
 bool isDebugMode = false; 
#if DEBUG 
    isDebugMode = true; 
#endif 
    if (isDebugMode == false) 
    { 
     enter code here 
    } 
    else 
    { 
     enter code here 
    } 
+2

這是一個不好回答,因爲它使用運行時的邏輯來處理什麼事情工作在編譯時完成。 – antiduh

+0

設計時間T4模板之類都需要這種東西,不時。 – StingyJack