首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Console.WriteLine()和Debug.WriteLine()有什么区别?

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

Stack Overflow用户
提问于 2010-06-10 16:34:22
回答 3查看 51.6K关注 0票数 103

Console.WriteLine()Debug.WriteLine()有什么不同

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-10 16:36:04

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

Debug.WriteLine写入Listeners集合中的所有跟踪侦听器时,可能会将其输出到多个位置(Visual Studio输出窗口、控制台、日志文件、注册侦听器的第三方应用程序(我相信DebugView会这样做)等)。

票数 115
EN

Stack Overflow用户

发布于 2010-06-10 16:58:07

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

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

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

票数 41
EN

Stack Overflow用户

发布于 2010-06-10 17:04:08

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

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

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

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

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3012822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档