bwe*_*rks 79 c# debugging tostring debuggerdisplay
有两种方法可以增加调试信息的有用性,而不是{MyNamespace.MyProject.MyClass}
在调试器中查看.
这些是使用[DebuggerDisplayAttribute][1]
和ToString()
方法.
using System.Diagnostics;
...
[DebuggerDisplay("Name = {Name}")]
public class Person
{
public string Name;
}
Run Code Online (Sandbox Code Playgroud)
要么
public class Person
{
public string Name;
public override string ToString()
{
return string.Format("Name = {0}", Name);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有理由更喜欢一个到另一个?有什么理由不这两个都做?这纯粹是个人偏好吗?
Ree*_*sey 85
使用[DebuggerDisplay]
仅适用于调试器.重写ToString()具有在运行时更改显示的"副作用".
这可能是也可能不是好事.
通常,您希望在调试期间获得比标准ToString()
输出更多的信息,在这种情况下,您可以使用两者.
例如,在您的情况下,"ToString"实现对我来说似乎很奇怪.我希望"Person"类ToString()实现只是直接返回Name,而不是"Name = PersonsName".但是,在调试过程中,我可能需要额外的信息.
还可以考虑调试器的缓慢:
DebuggerDisplayAttribute
格式表达式在每个调试步骤/断点后由调试器解释。
ToString
被编译的代码,因此更快的调试器来执行。
这与条件断点相同:如果条件表达式太慢而无法在每次执行到达断点时被调试器解释,那么删除断点并添加如下临时代码会很有用: if (condition) Debugger.Break();