Il existe deux façons d'augmenter l'utilité des informations de débogage au lieu de les voir {MyNamespace.MyProject.MyClass}
dans le débogueur.
Ce sont l'utilisation DebuggerDisplayAttribute
et la ToString()
méthode.
using System.Diagnostics;
...
[DebuggerDisplay("Name = {Name}")]
public class Person
{
public string Name;
}
ou
public class Person
{
public string Name;
public override string ToString()
{
return string.Format("Name = {0}", Name);
}
}
Y a-t-il une raison de préférer l'un à l'autre? Une raison de ne pas faire les deux? Est-ce une préférence purement personnelle?
la source
ToString
est souvent utilisé comme «chaîne d'affichage par défaut», par exemple, parConsole.WriteLine
ou par liaison de données WPF.Si ce qui
ToString()
revient et que vous voyez dans le débogueur n'est pas ce que vous souhaitez, utilisezDebuggerDisplayAttribute
.la source
La lenteur du débogueur peut également être prise en compte:
DebuggerDisplayAttribute
L'expression de format est interprétée par le débogueur après chaque étape de débogage / point d'arrêt.ToString
est compilé dans votre code et est donc beaucoup plus rapide à exécuter par le débogueur.C'est la même chose avec les points d'arrêt conditionnels: si l'expression conditionnelle est trop lente à interpréter par le débogueur chaque fois que l'exécution atteint le point d'arrêt, il peut être utile de supprimer le point d'arrêt et d'ajouter à la place du code temporaire comme celui-ci:
if (condition) Debugger.Break();
la source