gpt4 book ai didi

c# - 日志语句避免计算参数

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

在 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/

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