Debug.Print和Debug.WriteLine有什么区别?在MSDN中,两者的摘要是相同的:
将一行终止符后面的消息写入侦听器集合中的跟踪侦听器。
Debug.WriteLine有更多的重载。我看不出为什么要用Debug.Print而不是Debug.WriteLine
发布于 2011-03-23 21:56:30
它们都做同样的事情,但有趣的是,Debug.Print只接受一个字符串,而Debug.WriteLine将接受一个对象,该对象最终调用对象的ToString方法。
反光镜:
[Conditional("DEBUG")]
public static void Print(string message){
TraceInternal.WriteLine(message);
}
[Conditional("DEBUG")]
public static void WriteLine(string message){
TraceInternal.WriteLine(message);
}
[Conditional("DEBUG")]
public static void WriteLine(object value)
{
TraceInternal.WriteLine(value);
}我敢打赌,Debug.Print是Visual的一部分。
编辑:来自Tracing VB.NET Windows Application教程的
Visual 2005中的
、Debug.Write、Debug.WriteIf、Debug.WriteLine和Debug.WriteLineIf方法已被早期版本的Visual中可用的Debug.Print方法所取代。
当然,听起来Debug.Print在C#之前的日子里就被控制住了。
发布于 2011-03-23 21:51:53
Debug.Print和Debug.WriteLine各自提供了一个带有单个字符串参数的重载。在内部,这些单参数方法以相同的方式工作,并调用此方法:
TraceInternal.WriteLine(message);这两种方法的不同之处在于,Debug.Print提供了带有两个参数的重载:Debug.Print(String, Object[])。Print的重载可以显示格式化的字符串。提供该功能的Debug.WriteLine没有过载,但您当然可以使用:
Debug.WriteLine(string.Format())WriteLine是在.NET框架1.1中引入的,Print是在Framework2.0中引入的。在我看来,微软应该保留WriteLine作为方法的名称,并添加WriteLine(String, Object[])重载,而不是添加Print方法。
发布于 2011-03-23 22:18:20
他们不想冒险破坏.NET语言,因为它认为这两个重载都是不明确的。它们几乎是,WriteLine("foo")可以匹配WriteLine(string)和WriteLine(string,params object[])。C#对此有一条规则,但这是特定于该语言的。
https://stackoverflow.com/questions/5411999
复制相似问题