Есть два способа повысить полезность отладочной информации вместо просмотра {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);
}
}
Есть ли причина предпочесть одно другому? Есть ли причина не делать то и другое? Это чисто личные предпочтения?
источник
ToString
часто используется как «строка отображения по умолчанию», например, с помощьюConsole.WriteLine
привязки данных WPF.Если то, что
ToString()
возвращается, и вы видите в отладчике, не то, что вам нужно, используйтеDebuggerDisplayAttribute
.источник
Также можно учесть медлительность отладчика:
DebuggerDisplayAttribute
Выражение формата интерпретируется отладчиком после каждого шага отладки / точки останова.ToString
будет собран в вашем коде , и поэтому гораздо быстрее выполнить отладчик.То же самое и с условными точками останова: если условное выражение слишком медленно интерпретируется отладчиком каждый раз, когда выполнение достигает точки останова, может быть полезно удалить точку останова и вместо этого добавить временный код, подобный этому:
if (condition) Debugger.Break();
источник