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

Zol*_*mon 82 .net vb.net

vs 之间有什么区别?Console.WriteLine()Debug.WriteLine()

Sam*_*der 94

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

至于Debug.WriteLine写在所有跟踪侦听器监听器集合,它是可能的,这可能是在多个地方输出(Visual Studio的输出窗口,控制台,日志文件的第三方应用程序,注册一个监听器(我相信DebugView中做到这一点)等).

  • 严格的DebugView监视通过本机Windows API调用`OutputDebugString`(和`DebugPrint`)记录的消息.`DefaultTraceListener`写入`OutputDebugString`,这就是DebugView看到输出的原因.http://msdn.microsoft.com/en-us/library/system.diagnostics.defaulttracelistener.aspx (7认同)

Han*_*ant 35

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

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

一个明显的优点Debug.WriteLine()是它在Release版本中不产生任何开销,有效地消除了调用.但它不支持复合格式,你需要String.Format()它.对于调试跟踪,应该选择Debug类.


小智 17

如果您使用Console.WriteLine的目的仅用于调试,则最好使用Debug.WriteLine.

如果要向用户显示消息,可以使用Console.WriteLine.

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

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

  • "如果你想向用户显示一条消息,你可以使用console.writeline." 这可能会让一些人感到困惑,因为如果在控制台应用程序中执行,它只会向用户显示一些内容. (4认同)