Esistono due modi per aumentare l'utilità delle informazioni di debug invece di vedere {MyNamespace.MyProject.MyClass}
nel debugger.C# debugging: [DebuggerDisplay] o ToString()?
Questi sono l'uso del metodo DebuggerDisplayAttribute
e 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);
}
}
C'è qualche motivo per preferire l'uno all'altro? Qualche ragione per non fare entrambe le cose? È una preferenza puramente personale?
+1 Per aggiungere al punto "effetto collaterale" di Reed: 'ToString' è spesso usato come" stringa di visualizzazione predefinita ", ad es. Per associazione di dati" Console.WriteLine' o WPF. –
Sicuro; il formato della stringa è stato appena dato per un esempio visivo per enfatizzare la sua somiglianza con la stringa data per DebuggerDisplay. Il formato di DebuggerDisplay potrebbe anche restituire il nome direttamente, come dici tu. Vedo il tuo punto sugli effetti collaterali però - è il tipo di distinzione che sto cercando. Generalmente non utilizzo il metodo ToString su classi molto (tranne per lo scopo che ho dato sopra), quindi i suoi altri usi non erano così evidenti per me. Grazie! – bwerks