Hay dos maneras de aumentar la utilidad de la información de depuración en lugar de ver {MyNamespace.MyProject.MyClass}
en el depurador.Depuración de C#: [DebuggerDisplay] o ToString()?
Estos son el uso del método DebuggerDisplayAttribute
y ToString()
.
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 una a la otra? ¿Alguna razón para no hacer ambas cosas? ¿Es una preferencia puramente personal?
+1 Para agregar al punto de "efecto secundario" de Reed: 'ToString' a menudo se usa como una" cadena de pantalla predeterminada ", por ejemplo, mediante' Console.WriteLine' o WPF data binding. –
Sure; el formato de la cadena se acaba de dar para un ejemplo visual para enfatizar su similitud con la cadena dada para DebuggerDisplay. El formato DebuggerDisplay también podría devolver el nombre directamente, como dices. Sin embargo, veo tu punto acerca de los efectos secundarios: es el tipo de distinción que estoy buscando. Normalmente no utilizo mucho el método ToString en las clases (excepto por el propósito que he dado más arriba) por lo que sus otros usos no fueron tan evidentes para mí. ¡Gracias! – bwerks