Es gibt zwei Möglichkeiten, die Nützlichkeit von Debuginformationen zu erhöhen, anstatt {MyNamespace.MyProject.MyClass}
im Debugger zu sehen.C# Debugging: [DebuggerDisplay] oder ToString()?
Dies sind die Methoden DebuggerDisplayAttribute
und ToString()
.
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 irgendeinen Grund einen zum anderen zu bevorzugen? Irgendein Grund, beides nicht zu tun? Ist es rein persönliche Vorliebe?
+1 Hinzufügen zu Reed's "Nebeneffekt" Punkt: 'ToString' wird oft als" Standardanzeigezeichenfolge "verwendet, zB durch' Console.WriteLine' oder WPF Datenbindung. –
Sicher; Das Format der Zeichenfolge wurde nur für ein visuelles Beispiel angegeben, um ihre Ähnlichkeit mit der für DebuggerDisplay angegebenen Zeichenfolge hervorzuheben. Das DebuggerDisplay-Format könnte auch den Namen direkt zurückgeben, wie Sie sagen. Ich sehe jedoch deine Meinung über Nebenwirkungen - es ist die Art von Unterscheidung, nach der ich suche. Ich verwende die ToString-Methode in der Regel nicht viel für Klassen (außer für den oben angegebenen Zweck), so dass meine anderen Nutzungen nicht so offensichtlich für mich waren. Vielen Dank! – bwerks