Console
.WriteLine()
和Debug
.WriteLine()
有什么不同
发布于 2010-06-10 16:36:04
Console.WriteLine在调试或发布中写入标准输出流。Debug.WriteLine写入Listeners集合中的跟踪侦听器,但仅当在调试中运行时。在发布配置中编译应用程序时,Debug元素将不会编译到代码中。
当Debug.WriteLine
写入Listeners集合中的所有跟踪侦听器时,可能会将其输出到多个位置(Visual Studio输出窗口、控制台、日志文件、注册侦听器的第三方应用程序(我相信DebugView会这样做)等)。
发布于 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类应该是您的选择。
发布于 2010-06-10 17:04:08
如果您使用Console.WriteLine的目的只是为了调试,那么您最好使用Debug.WriteLine。
如果您希望(在控制台应用程序中)向用户显示一条消息,则可以使用Console.WriteLine。
Debug.WriteLine仅用于调试您的应用程序。在发布模式下,您的调试语句将被忽略。
控制台应用程序的另一个用途是测试私有程序集。您可以简单地将DLL重新构建为控制台应用程序,并从控制台输入/输出到控制台,而不是通过创建某种GUI测试工具来测试编译后的DLL版本。我发现这种技术比花时间创建GUI测试工具更快。
https://stackoverflow.com/questions/3012822
复制相似问题