C# 不支持 C/C++ 宏。 StackOverflow 中有很多与此相关的问答,但我找不到具体问题的答案。
假设我正在使用 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)”部分(在项目中可能重复数千次)。
如何在 C# 中实现 LOG(expr) 之类的结果?
谢谢!
最佳答案
你不能……因为 C# 没有宏!
当然你也可以这样做:
定义接受 lambda 的日志函数
void Log(Func<string> f) {
if(log.IsDebugEnabled)
{
log.Debug(f());
}
}
当你想记录一些东西时,像这样调用它:
Log(()=>"Entry number: " + i + " is " + entry[i]);
这样,只有在启用日志记录时才会评估参数,我认为这是您想要实现的。
(我的 C# 有点生疏,所以语法可能略有偏差)
关于c# - 如何在没有 C/C++ 的情况下在 C# 中修饰代码——比如宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13064189/