C#, отлаживающий: [DebuggerDisplay] или ToString ()?

Существует два способа увеличить полноценность отладочной информации вместо наблюдения {MyNamespace.MyProject.MyClass} в отладчике.

Это использование [DebuggerDisplayAttribute][1] и ToString() метод.

using System.Diagnostics;
...

[DebuggerDisplay("Name = {Name}")]
public class Person
{
    public string Name;
}

или

public class Person
{
    public string Name;
    public override string ToString()
    {
        return string.Format("Name = {0}", Name);
    }
}

Там какая-либо причина состоит в том, чтобы предпочесть тот другому? Какая-либо причина не сделать обоих? Это - чисто персональное предпочтение?

79
задан DaveInCaz 20 February 2019 в 18:24
поделиться

1 ответ

Использование [DebuggerDisplay] предназначено только для отладчика. Переопределение ToString () имеет «побочный эффект» изменения отображения во время выполнения.

Это может быть хорошо, а может и нет.

Часто во время отладки требуется больше информации, чем в стандартном выводе ToString () , и в этом случае вы должны использовать и то, и другое.

Например, в вашем случае реализация ToString кажется мне странной. Я ожидал, что реализация ToString () класса «Человек» просто вернет имя напрямую, а не «Имя = PersonsName». Однако во время отладки мне может понадобиться эта дополнительная информация.

85
ответ дан 24 November 2019 в 10:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: