C#不支持C/C++宏。在StackOverflow中有很多Q & A與此相關,但我無法找到特定問題的答案。如何裝飾C#中的代碼無需C/C++ - 像宏一樣
讓說我使用的代碼就像一個建議,在http://logging.apache.org/log4net/release/faq.html:
if(log.IsDebugEnabled)
{
log.Debug("Entry number: " + i + " is " + entry[i]);
}
這種方式來啓用/禁用記錄有明顯的缺點。在C++中,我會使用像LOG(expr)這樣的宏來提高代碼的可讀性並更好地控制'if(log.IsDebugEnabled)'部分代碼(可能在項目中重複數千次)。
我該如何實現LOG(expr) - 就像C#中的結果一樣?
謝謝!
您可以嘗試面向方面的編程參見[PostSharp(HTTP的簡單串聯://www.sharpcrafters .COM /解決方案/日誌#)。 – Rafal
將IsDebugEnabled測試移動到記錄器調試功能。 –
僅僅因爲從閱讀你的問題可能不明顯,你要找的是一種在運行時**開關記錄器的方法**,並確保'log.Debug'的參數是沒有評估*根本*如果日誌記錄被禁用,是正確的? – jalf