gpt4 book ai didi

C# 在 Release 模式下运行时是否会编译出 Debug 语句?

转载 作者:太空狗 更新时间:2023-10-29 18:15:21 27 4
gpt4 key购买 nike

使用 Debug.WriteLine 写入输出似乎比大量的 #if DEBUG 语句更理想(就可读性而言)。

当程序在 Release模式下编译时,所有与 Debug.WriteLine 相关的开销是否都消失了,就好像它不存在一样,还是函数仍然被调用,但内部什么也没做?

如果是这样,是否有任何方法可以在自定义类上获得此功能,即只有在 Debug模式下才会编译静态调用?

最佳答案

它叫做 ConditionalAttribute并且它已经存在:当您在 Release模式下编译时,Debug.WriteLine() 调用将被完全删除。

声明如下:

[ConditionalAttribute("DEBUG")]
public static void WriteLine(string message)

因此,如果未声明 DEBUG 符号,则对它的任何调用都会被删除,例如,在发布版本的默认配置中。 (您可以更改为项目属性中的不同构建配置定义的预处理器符号。)

对于(几乎?)Debug 中的每个方法也是如此。事实上,这是 DebugTrace 之间的主要区别 - Trace 的方法也保留在发布中。

关于C# 在 Release 模式下运行时是否会编译出 Debug 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6890567/

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