在C#中使用Conditional中繼資料attribute來實現Debug代碼

來源:互聯網
上載者:User

1[Conditional("DEBUG")] 
2private void DEBUG_TRACE( string strMsg )
3{
4    Console.WriteLine( strMsg );
5}

        這種寫法清晰,代碼簡介,容易閱讀,可以屏蔽潛在的bug。1 DEBUG_TRACE("ERROR MESSAGE1");
2 Console.WriteLine("MESSAGE");
3 DEBUG_TRACE("ERROR MESSAGE2");

        對於這段代碼在RELEASE中產生的IL代碼和如下的代碼一樣。Console.WriteLine("MESSAGE");

不過使用Conditional屬性的函數有個限制,就是不能有傳回值,即必須以void來定義傳回值。

   而且用Conditional來增加多個屬性,例如:

    [Conditional( "DEBUG" ),Conditional( "TRACE" )]

    private void DEBUG_TRACE( string strMsg )

    {

        Console.WriteLine( strMsg );

    }

 

不過這兩個屬性之間的關係是或的關係,即“DEBUG”或者“TRACE”任意一個被定義了,那麼這段代碼就會被執行。如果需要增加兩個並的屬性,直接用Conditional是無法實現的,需要藉助IF/ENDIF來完成,如下:

    #if( DEBUG && TRACE )

    #define BOTH

#endif

    [Conditional( "BOTH" )]

    private void DEBUG_TRACE( string strMsg )

    {

        Console.WriteLine( strMsg );

    }

 

方法已經說到這裡,可以基本上說完了。接下來,就說說如何設定環境變數,在C#中有三種設定方法。

方法一,直接在程式中加入,需要在一個檔案的開頭進行定義;

方法二,在項目中的編譯命令列中進行設定;

方法三,是在作業系統中增加環境變數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.