什么是VS Debug
.WriteLine()
Console
.WriteLine()
之间的区别?Console.WriteLine()与Debug.WriteLine()之间有什么区别?
回答
Console.WriteLine写入标准输出流,无论是在调试或发布。 Debug.WriteLine写入Listeners集合中的跟踪侦听器,但仅在调试时运行。当应用程序在发布配置中编译时,Debug元素将不会被编译到代码中。
至于Debug.WriteLine
写入Listeners集合中的所有跟踪监听器,它是可能的,这可能是在多个地方输出(Visual Studio的输出窗口,控制台,日志文件的第三方应用程序,注册一个监听器(我相信DebugView这样做)等)。
Console.WriteLine()
是用于控制台模式程序。 Visual Studio托管过程的一个很好的功能使其输出出现在Visual Studio输出窗口中,同时调试没有控制台的进程。这在调试时非常有用,但要注意,当您准备创建发布版本时,应该删除此代码(或将其包含在#ifdef DEBUG
中)。否则会给你的程序增加不必要的开销。这使得它不太适合调试跟踪。
Debug.WriteLine()
如果使用条件#defined创建DEBUG
,则会生成跟踪信息。在Debug版本中默认处于打开状态。输出结束的位置可以在app.exe.config
文件中配置。如果这个配置没有被覆盖,.NET会自动提供一个DefaultTraceListener
类的实例。它将Debug.WriteLine()
文本与Windows OutputDebugString()
API函数一起发送给调试器。 Visual Studio调试器使其显示在输出窗口中,就像Console.WriteLine()
一样。
Debug.WriteLine()
的一个明显的优点是它在Release版本中不产生任何开销,这些调用被有效地移除。但是它不支持复合格式,因此您需要String.Format()
。对于调试跟踪,Debug类应该是您的选择。
如果您的使用Console.WriteLine的目的仅仅是为了调试,您的 更好地使用Debug.WriteLine。
如果您想向用户显示消息,您可以使用Console.WriteLine。
Debug.WriteLine仅用于调试您的应用程序。在 发布模式下,您的调试语句将被忽略。
控制台应用程序的另一个用法是测试私人程序集。而不是创建某种GUI测试工具来测试DLL的编译版本的传统方法,您可以简单地重新构建DLL作为控制台应用程序以及从控制台输入/输出。我发现这种技术比花费时间创建GUI测试工具更快。
“如果你想向用户显示一条消息,你可以使用console.writeline。“这可能会让一些人感到困惑,因为如果在控制台应用程序中执行,它只会向用户显示某些内容。 – 2011-05-03 15:19:46
- 1. Console.writeline()/trace.writeline()之间的区别
- 2. DesiredCapabilities与RequiredCapabilities之间有什么区别?
- 3. 设置Console.WriteLine&Debug.WriteLine
- 4. Console.WriteLine('single quote');有什么区别?和Console.WriteLine(“双引号”);
- 5. dpm()和dsm()之间有什么区别?
- 6. @dynamic和@synthesize之间有什么区别?
- 7. vbNullString和“”之间有什么区别吗?
- 8. * zoom和zoom之间有什么区别?
- 9. String.Concat,string.format和+之间有什么区别?
- 10. Android:view.getX()之间有什么区别view.getTranslationX()
- 11. StaticLayout和DynamicLayout之间有什么区别
- 12. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之间有什么区别?
- 13. :: after和after之间有什么区别?
- 14. %.02f和%.2f之间有什么区别?
- 15. {$ var}和$ var之间有什么区别?
- 16. ReleaseFloatArrayElements和DeleteLocalRef之间有什么区别
- 17. {0}和“”之间有什么区别?
- 18. getA()和this.getA()之间有什么区别?
- 19. @observable和@published之间有什么区别
- 20. $ {}和#{}之间有什么区别?
- 21. url.getFile()和getpath()之间有什么区别?
- 22. KVC和Properties之间有什么区别?
- 23. Lazy.Force()和Lazy.Value之间有什么区别
- 24. “层”和“层”之间有什么区别?
- 25. 1.1em和1.05em之间有什么区别?
- 26. proc和lambda之间有什么区别?
- 27. ViewFlipper和ViewSwitcher之间有什么区别
- 28. typedef和宏之间有什么区别?
- 29. “$^N”和“$ +”之间有什么区别?
- 30. 这两个....之间有什么区别?
严格地说,DebugView监视通过本地Windows API调用'OutputDebugString'(和'DebugPrint')记录的消息。 'DefaultTraceListener'写入'OutputDebugString',这就是DebugView看到输出的原因。 http://msdn.microsoft.com/en-us/library/system.diagnostics.defaulttracelistener.aspx – MarkJ 2010-06-10 12:05:51