Debug.Print
和Debug.WriteLine
之间有什么区别? MSDN中的两者摘要都是相同的:
将一个消息后跟一个行终止符写入Listeners集合中的跟踪侦听器。
Debug.WriteLine
有更多重载。我看不出为什么会使用Debug.Print
代替Debug.WriteLine
?
答案 0 :(得分:29)
它们都做同样的事情,但有趣的是Debug.Print
只接受一个字符串,而Debug.WriteLine
将接受一个最终调用对象的ToString
方法的对象。
使用Reflector:
[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 Basic的延续。
编辑:来自Tracing VB.NET Windows Application的教程:
在Visual Basic.NET 2005中, Debug.Write,Debug.WriteIf, Debug.WriteLine和Debug.WriteLineIf 方法已经被替换了 Debug.Print方法可用 在早期版本的Visual Basic中。
当前Debug.Print
天之前的C#
听起来似乎是一种拖延。
答案 1 :(得分:8)
Debug.Print
和Debug.WriteLine
每个都提供一个带有单个字符串参数的重载。在内部,这些单参数方法以相同的方式工作并调用此方法:
TraceInternal.WriteLine(message);
两种方法的区别在于Debug.Print
提供了一个带有两个参数的重载:Debug.Print(String, Object[])
。 Print
的重载可以显示格式化字符串。 Debug.WriteLine
没有超载提供该功能,但您当然可以使用:
Debug.WriteLine(string.Format())
WriteLine
在.NET Framework 1.1中引入,Print
在Framework 2.0中引入。在我看来,Microsoft应该使用WriteLine
作为方法的名称并添加WriteLine(String, Object[])
重载,而不是添加Print
方法。
答案 2 :(得分:2)
他们不想冒险破坏认为两种重载都不明确的.NET语言。它们非常接近,WriteLine(“foo”)可以匹配WriteLine(string)和WriteLine(string,params object [])。 C#有一个规则,但这是特定于那种语言的。
答案 3 :(得分:1)
来自原型:
public static void Print(string message);
public static void Print(string format, params object[] args);
public static void WriteLine(object value);
public static void WriteLine(string message);
看起来Print可以执行格式化字符串,WriteLine可以转储对象。