据我了解,System.Console
默认会写入 STDOUT,但是 System.Diagnostics.Trace
和 System.Diagnostics.Debug 呢?
?默认行为是什么,它们是否可以任何方式配置?
似乎不同的人(在 Internet 上)使用不同的东西,但我假设我发现的大部分内容都是错误的,因为每种东西都应该有特定的语义,对吗?如果是这样,是否有任何框架(如 ASP.NET 或 WPF)专门使用它们?
还有最后一个问题,选择使用其中哪一个的经验法则是什么?
最佳答案
Debug
和 Trace
都写到相同的位置,即 Listeners
集合。默认情况下它被路由到 Visual Studio 的调试窗口,但是 you can put code in your app.config
file在不调试时将其重定向到其他位置。
Debug
和Trace
的区别在于Debug
中的所有方法只有在DEBUG
时才写出编译符号已设置(调试时默认打开,发布时默认关闭)未设置符号时,永远不会在代码中调用方法。 Trace 查找 TRACE 符号(调试和发布均默认打开)。除此之外,这两个类是相同的。事实上,如果您修改 Debug.Listeners
以添加新的监听器,它也会修改 Trace.Listeners
,因为两者都指向内部静态属性 TraceInternal.Listeners
至于选择使用哪一个,您是否希望诊断信息显示在发布和 Debug模式下?使用跟踪,仅调试?使用调试。您希望它在没有附加调试器的情况下对最终用户可见吗?使用控制台或添加控制台跟踪监听器。
关于c# - System.Diagnostics.Trace、System.Diagnostics.Debug 和 System.Console 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26126526/