Hay dos formas de aumentar la utilidad de depurar información en lugar de verla {MyNamespace.MyProject.MyClass}
en el depurador.
Estos son el uso DebuggerDisplayAttribute
y el ToString()
método.
using System.Diagnostics;
...
[DebuggerDisplay("Name = {Name}")]
public class Person
{
public string Name;
}
o
public class Person
{
public string Name;
public override string ToString()
{
return string.Format("Name = {0}", Name);
}
}
¿Hay alguna razón para preferir uno al otro? ¿Alguna razón para no hacer ambas cosas? ¿Es una preferencia puramente personal?
fuente
ToString
menudo se usa como una "cadena de visualización predeterminada", por ejemplo, porConsole.WriteLine
o enlace de datos WPF.Si lo que
ToString()
regresa y ve en el depurador no es lo que le gustaría, entonces useDebuggerDisplayAttribute
.fuente
También se puede tener en cuenta la lentitud del depurador:
DebuggerDisplayAttribute
La expresión de formato es interpretada por el depurador después de cada paso de depuración / punto de interrupción.ToString
se compila en su código y, por lo tanto, el depurador lo ejecuta mucho más rápido.Lo mismo ocurre con los puntos de interrupción condicionales: si la expresión condicional es demasiado lenta para que el depurador la interprete cada vez que la ejecución alcanza el punto de interrupción, puede ser útil eliminar el punto de interrupción y, en su lugar, agregar un código temporal como este:
if (condition) Debugger.Break();
fuente