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

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

Console.WriteLine写入标准输出stream,无论是在debugging或释放。 Debug.WriteLine写入Listeners集合中的跟踪侦听器 ,但仅在debugging时运行。 当应用程序在发布configuration中编译时,Debug元素将不会被编译到代码中。

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

Console.WriteLine()用于控制台模式程序。 Visual Studio托pipe进程的一个很好的function使得它的输出显示在Visual Studio输出窗口中,同时debugging没有控制台的进程。 这在debugging时非常有用,但要注意,当你准备创buildRelease版本时,应该删除这个代码(或者用#ifdef DEBUG包装它)。 否则会给你的程序增加不必要的开销。 这使得它不太理想用于debugging跟踪。

如果使用DEBUG条件#defined进行构build, Debug.WriteLine()生成跟踪信息。 在Debug版本中,默认情况下是打开的。 输出结束的地方可以在app.exe.config文件中configuration。 如果这个configuration没有被覆盖,.NET会自动提供一个DefaultTraceListener类的实例。 它将带有Windows OutputDebugString() API函数的Debug.WriteLine()文本发送到debugging器。 Visual Studiodebugging器使其出现在Output窗口中,就像Console.WriteLine()

Debug.WriteLine()一个明显的优点是在Release版本中不会产生开销,所以调用被有效的移除了。 但是它不支持复合格式,所以你需要String.Format() 。 对于debugging跟踪,Debug类应该是您的select。

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

如果你想显示一条消息给你的用户,你可以使用Console.WriteLine 。

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

控制台应用程序的另一个用法是testing私人程序集。 而不是创build某种GUItesting工具来testingDLL的编译版本的传统方法,您可以简单地重新构buildDLL作为控制台应用程序和input/输出到控制台。 我发现这个技术比花时间创build一个GUItesting工具更快。