C#debugging:或ToString()?
有两种方法可以增加debugging信息的有效性,所以在debugging器中看不到{MyNamespace.MyProject.MyClass} 。 这些是使用DebuggerDisplayAttribute
和ToString()
方法。
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
。