C#debugging:或ToString()?

有两种方法可以增加debugging信息的有效性,所以在debugging器中看不到{MyNamespace.MyProject.MyClass} 。 这些是使用DebuggerDisplayAttributeToString()方法。

 using System.Diagnostics; ... [DebuggerDisplay("Name = {Name}")] public class Person { public string Name; } 

要么

 public class Person { public string Name; public override string ToString() { return string.Format("Name = {0}", Name); } } 

有没有任何理由更喜欢一个到另一个? 任何理由不这样做? 这纯粹是个人喜好吗?

使用[DebuggerDisplay]仅适用于debugging器。 重载ToString()在运行时改变显示的“副作用”。

这可能会也可能不会是一件好事。

通常情况下,在debugging过程中需要比标准的ToString()输出更多的信息,在这种情况下,你可以同时使用两者。

例如,在你的情况下,“ToString”实现对我来说似乎很奇怪。 我期望一个“人”类的ToString()实现只是直接返回名称,而不是“名称= PersonsName”。 但是,在debugging过程中,我可能需要额外的信息。

“当您创build自定义类或结构时,您应该重写ToString方法以便将您的types信息提供给客户端代码。” – MSDN

如果什么ToString()返回,并且你在debugging器中看到的不是你想要的,那么你使用DebuggerDisplayAttribute