繁体   English   中英

Console.WriteLine() 与 Debug.WriteLine() 有什么区别?

[英]What's the difference between Console.WriteLine() vs Debug.WriteLine()?

Console .WriteLine()Debug .WriteLine()什么.WriteLine()

Console.WriteLine在调试或发布中写入标准输出流。 Debug.WriteLine写入Listeners集合中的跟踪侦听,但仅在调试中运行时。 在发布配置中编译应用程序时,不会将 Debug 元素编译到代码中。

由于Debug.WriteLine写入Listeners集合中的所有跟踪侦听,因此这可能会在多个地方输出(Visual Studio 输出窗口、控制台、日志文件、注册侦听器的第三方应用程序(我相信) DebugView执行此操作)等)。

Console.WriteLine()用于控制台模式程序。 Visual Studio 托管进程的一个很好的功能是在调试没有控制台的进程时,它的输出显示在 Visual Studio 输出窗口中。 这在调试时非常有用,但请注意,当您准备好创建发布版本时,您应该删除此代码(或用 #ifdef DEBUG 包装它)。 否则,它会给您的程序增加不必要的开销。 这使得它不太适合调试跟踪。

如果使用 DEBUG 条件 #defined 构建, Debug.WriteLine()生成跟踪信息。 在 Debug 版本中默认开启。 可以在 app.exe.config 文件中配置输出的最终位置。 如果未覆盖此配置,.NET 会自动提供 DefaultTraceListener 类的实例。 它将带有 Windows OutputDebugString() API 函数的 Debug.WriteLine() 文本发送到调试器。 Visual Studio 调试器使它出现在输出窗口中,就像 Console.WriteLine() 一样。

Debug.WriteLine() 的一个明显优势是它在发布版本中不会产生开销,调用被有效地删除。 但是它不支持复合格式,为此您需要 String.Format() 。 对于调试跟踪,您应该选择 Debug 类。

如果您使用 Console.WriteLine 的目的只是为了调试,则最好使用Debug.WriteLine

如果您想向您的用户显示一条消息(在控制台应用程序中),您可以使用Console.WriteLine

Debug.WriteLine 仅用于调试您的应用程序。 在发布模式下,您的调试语句将被忽略。

控制台应用程序的另一个用途是测试私有程序集。 与创建某种 GUI 测试工具来测试 DLL 的编译版本的传统方法不同,您可以简单地将 DLL 重新构建为控制台应用程序并从/向控制台输入/输出。 我发现这种技术比花时间创建 GUI 测试工具更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM