gpt4 book ai didi

c# - 如何在没有 C/C++ 的情况下在 C# 中修饰代码——比如宏

转载 作者:太空宇宙 更新时间:2023-11-03 21:54:10 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com