Console
.WriteLine()
与 Debug
.WriteLine()
之间的区别是什么?
答案 0 :(得分:87)
Console.WriteLine在调试或发布中写入标准输出流。 Debug.WriteLine写入Listeners集合中的跟踪侦听器,但仅在调试时运行。在发布配置中编译应用程序时,Debug元素将不会编译到代码中。
当Debug.WriteLine
写入Listeners集合中的所有跟踪侦听器时,可能会在多个位置输出(Visual Studio输出窗口,控制台,日志文件,第三个 - 注册听众的派对应用程序(我相信DebugView会这样做),等等。)
答案 1 :(得分:33)
Console.WriteLine()
适用于控制台模式程序。 Visual Studio托管过程的一个很好的功能使其输出显示在Visual Studio输出窗口中,同时调试没有控制台的进程。这在调试时非常有用,但请注意,当您准备创建Release版本时,应该删除此代码(或用#ifdef DEBUG
包装它)。否则会给您的程序增加不必要的开销。这使得它不太适合调试跟踪。
Debug.WriteLine()
条件#defined构建, DEBUG
会生成跟踪信息。默认情况下,这在Debug版本中是打开的。输出结束的位置可以在app.exe.config
文件中配置。如果未覆盖此配置,.NET将自动提供DefaultTraceListener
类的实例。它将带有Windows Debug.WriteLine()
API函数的OutputDebugString()
文本发送到调试器。 Visual Studio调试器使其显示在“输出”窗口中,就像Console.WriteLine()
。
Debug.WriteLine()
的一个明显优势是它在Release版本中不产生任何开销,有效地删除了调用。但是它不支持复合格式,您需要String.Format()
。对于调试跟踪,应该选择Debug类。
答案 2 :(得分:16)
如果您使用Console.WriteLine的目的仅用于调试,那么您 更好地使用Debug.WriteLine。
如果您想向用户显示消息,请使用Console.WriteLine。
Debug.WriteLine仅用于调试应用程序。在 发布模式将忽略调试语句。
控制台应用程序的另一个用途是测试私有程序集。您可以简单地将DLL重新构建为控制台应用程序并从/向控制台输入/输出,而不是创建某种GUI测试工具来测试DLL的编译版本的传统方法。我发现这种技术比花时间创建GUI测试工具更快。