C# 在发布模式下运行时,调试语句会被编译出来吗?

2024-04-16

使用说似乎是理想的(就可读性而言)Debug.WriteLine写入输出而不是大量#if DEBUG声明。

当程序在发布模式下编译时,所有开销都用Debug.WriteLine消失就好像它不存在一样,或者该函数仍然被调用,但内部没有执行任何操作?

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


它被称为条件属性 http://msdn.microsoft.com/en-us/library/system.diagnostics.conditionalattribute.aspx它已经在那里了:Debug.WriteLine()当您在发布模式下编译时,调用将被完全删除。

它的声明如下:

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

因此,如果DEBUG符号未声明,例如,在发布版本的默认配置中。 (您可以在项目属性中更改为不同构建配置定义的预处理器符号。)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 在发布模式下运行时,调试语句会被编译出来吗? 的相关文章

随机推荐

  • 是否有用于以下数据整理和转换的 R 代码

    我有以下数据集 id lt c 1 1 1 1 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 s02 lt c 001 0
  • Lua - 尝试调用全局(零值)

    执行此代码时 出现错误 尝试调用全局 forId 零值 function execute args local itemid 526 local bone forId itemid this is where the error occur
  • 在一系列提交上运行过滤器分支

    git filter branch env filter export GIT AUTHOR EMAIL foo example com export GIT AUTHOR NAME foo commita commitb 结果是Which
  • 将锚点保存在ie6历史记录中

    我有一个带有锚点导航的网站 例如gmail 当锚点值更改时 页面的新内容会使用ajax加载 在 Firefox 中 当我更改锚点 使用 js 或页面 时 历史记录中会创建一个新项目并完美运行 但在 IE6 中 它不存储这个新项目 并且后退按
  • 如何检查日期时间段的交集[重复]

    这个问题在这里已经有答案了 我有四个 DateTime 对象 A1 A2 和 B1 B2 我需要知道 A1 A2 期间与 B1 B2 期间不相交 但我不想写脏代码 就像许多 if 块一样 if A1 lt B1 A2 gt B1 retur
  • 如何使用c++在运行时动态注册工厂类中的类

    现在 我实现了一个工厂类来动态创建带有标识字符串的类 请参见以下代码 void IOFactory registerIO Register NDAM9020 gt IOBase return new NDAM9020 Register BK
  • 如何更改 tkinter 树视图中选定单元格的前景色或背景色?

    我想更改 tkinter treeview 中选定单元格的前景色或背景色 我怎样才能做到这一点 This link https stackoverflow com a 18057449 5722359显示了更改树视图中所有单元格颜色的命令
  • 构建一个完整的在线支付网关,如 Paypal [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 所以这个问题不是关于将现有的支付网关集成到我的网站中 这更多的是一个架构问题 我想建立一个类似于Paypal 的系统 现在我知道 Pa
  • 如何使用 Firebase 函数向用户发送 FCM?

    Firebase 目前已推出Firebase 功能添加服务器端代码 Firebase 功能 https firebase google com docs functions 我想知道当数据库发生某些变化时是否可以通过这些函数调用 FCM 通
  • DB2 将 ISO 8601 时间戳字符串转换为 DB2 时间戳

    我有一个要求 我需要获取两个 ISO 8601 时间戳格式的字符串 并且必须比较它们并获取它们的最大时间戳 字符串采用以下格式 2014 06 11T16 45 45Z 为了进行比较 我需要将它们转换为 DB2 时间戳 然后进行比较 问题出
  • 获取 Roslyn 中类之间的依赖关系

    我使用 Roslyn 成功获取了项目之间的依赖关系 现在我想获取类之间的依赖关系 类似于 Visual Studio Enterprise 中的代码映射功能 这是我的代码 部分是我想象我能得到一些东西的地方 不过 我对 Roslyn API
  • VBA用于在文本溢出时缩小PowerPoint中的字体

    我正在尝试为 PowerPoint 文件找到一个宏 该文件是通过 CAT 工具进行语言转换后导出的 在某些语言对中 由于语言长度的差异 翻译的内容将无法放入源文件文本框中 因此 翻译和导出的 PowerPoint 文件包含多个形状 文本框
  • 检测是否安装了 SQL Server Compact Edition 3.5 SP2 x64?

    我正在构建一个安装程序 并且想要引导 SQL Server Compact Edition 3 5 SP2 问题是我正在寻找注册表项HKLM SOFTWARE Microsoft Microsoft SQL Server Compact E
  • 如何向文本框添加按钮?

    我正在尝试制作一个右侧带有按钮的文本框 我的代码 public partial class TextBoxButton TextBox Category Button Description Button in textbox public
  • SQL Server 中的 DECODE() 函数

    SELECT PC COMP CODE R PC RESUB REF DECODE PC SL LDGR CODE 02 DR CR PC DEPT NO DEPT PC DEPT NO PC SL LDGR CODE PC SL ACNO
  • Jquery mobile 中的选择选项出现问题

    我有一个表格 其中包含输入文本以及选择选项和按钮 单击按钮时将克隆表格行 除了选择选项之外 一切都工作正常 克隆表行后 选择选项不会显示我选择的内容 这是 JsFiddlehttp jsfiddle net aravinth Ad22d h
  • Android 中相机捕获图像的图像叠加

    我需要用相机拍照 同时在相机视图顶部显示叠加图像 拍照后 我需要保存用户在拍照时看到的内容 有人可以建议我吗 请 public void onPictureTaken byte data Camera camera Bitmap camer
  • 检查orientdb中是否存在类

    如何检查东方数据库中是否存在类 如果它不存在于数据库中 我需要创建它并插入一条记录 如果存在 我需要插入该记录 我需要使用 JAVA 做同样的事情 您可以使用以下语句通过 SQL 检索架构信息 select expand classes f
  • 如何读取 Windows 特定扩展名

    在 OpenGL superible 中 示例说我可以通过以下方式读取 Windows 特定扩展 Type defined in the book as char but that is not what glGetString retur
  • C# 在发布模式下运行时,调试语句会被编译出来吗?

    使用说似乎是理想的 就可读性而言 Debug WriteLine写入输出而不是大量 if DEBUG声明 当程序在发布模式下编译时 所有开销都用Debug WriteLine消失就好像它不存在一样 或者该函数仍然被调用 但内部没有执行任何操