Es gibt zwei Möglichkeiten, den Nutzen des Debuggens von Informationen zu erhöhen, anstatt sie {MyNamespace.MyProject.MyClass}
im Debugger anzuzeigen.
Dies sind die Verwendung DebuggerDisplayAttribute
und die ToString()
Methode.
using System.Diagnostics;
...
[DebuggerDisplay("Name = {Name}")]
public class Person
{
public string Name;
}
oder
public class Person
{
public string Name;
public override string ToString()
{
return string.Format("Name = {0}", Name);
}
}
Gibt es einen Grund, das eine dem anderen vorzuziehen? Gibt es einen Grund, nicht beides zu tun? Ist es eine rein persönliche Präferenz?
quelle
ToString
Wird häufig als "Standardanzeigezeichenfolge" verwendet, z. B. durchConsole.WriteLine
oder WPF-Datenbindung.Wenn das, was
ToString()
zurückkehrt und Sie im Debugger sehen, nicht das ist, was Sie möchten, verwenden SieDebuggerDisplayAttribute
.quelle
Die Langsamkeit des Debuggers kann ebenfalls berücksichtigt werden:
DebuggerDisplayAttribute
Der Formatausdruck wird vom Debugger nach jedem Debugging-Schritt / Haltepunkt interpretiert .ToString
wird in Ihrem Code kompiliert und ist daher vom Debugger viel schneller auszuführen.Dies gilt auch für bedingte Haltepunkte: Wenn der bedingte Ausdruck zu langsam ist, um vom Debugger jedes Mal interpretiert zu werden, wenn die Ausführung den Haltepunkt erreicht, kann es nützlich sein, den Haltepunkt zu entfernen und stattdessen temporären Code wie folgt hinzuzufügen:
if (condition) Debugger.Break();
quelle