在 C# 中有一种方法可以避免计算昂贵的参数。
例子
DebugLog(object.getName());
如果我想避免调用 getName(比如说它很昂贵),我必须这样做
#if DEBUG
DebugLog(object.getName());
#endif
在其他语言中,我可以制作一个日志宏,如果日志级别是某种特定的方式,那么它就是一个空操作
DebugLog(anything i want as it just is skipped)
除了让每一个日志都有丑陋的定义之外,还有其他方法吗?
最佳答案
In 可以在条件属性的帮助下完成。例如。如果您有 [ConditionalAttribute("DEBUG")]
,并且未定义 DEBUG
,则跳过整个函数调用,包括参数评估。
例如,这就是 Debug.Assert
有效。
比如这段代码
static void Main()
{
Log(F());
}
[ConditionalAttribute("DEBUG")]
static void Log(string s)
{
Console.WriteLine(s);
}
static string F()
{
Console.WriteLine("foo");
return "bar";
}
输出
foo
bar
在 Debug 配置中,定义了 DEBUG
,而在 Release 配置中没有定义。
关于c# - 日志语句避免计算参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24876354/