День шестидесятый. #TipsAndTricks
10. Управление полем значения в отладчике
Мощь современного отладчика заключается в отображении данных объекта при отладке в простой и понятной форме. Поэтому, когда отладчик отображает эту информацию, он должен показывать наиболее интересные значения сразу. К сожалению, отладчику трудно анализировать различные объекты и выделять в них «самое важное». Единственным универсальным решением будет контроль за отображением значений в отладчике, что состоит в добавлении атрибутов к объектам.
Отладка с применением атрибутов даёт разработчику типа возможность указать, как объект будет выглядеть в отладчике. Это достигается применением атрибута
Если вы хотите посмотреть свойства объекта
Источник: https://devblogs.microsoft.com/visualstudio/7-hidden-gems-in-visual-studio-2017/
10. Управление полем значения в отладчике
Мощь современного отладчика заключается в отображении данных объекта при отладке в простой и понятной форме. Поэтому, когда отладчик отображает эту информацию, он должен показывать наиболее интересные значения сразу. К сожалению, отладчику трудно анализировать различные объекты и выделять в них «самое важное». Единственным универсальным решением будет контроль за отображением значений в отладчике, что состоит в добавлении атрибутов к объектам.
Отладка с применением атрибутов даёт разработчику типа возможность указать, как объект будет выглядеть в отладчике. Это достигается применением атрибута
DebuggerDisplay
. Допустим, вы отлаживаете следующий код:class PersonЕсли вы установите точку прерывания на закрывающей скобке метода
{
public string FirstName;
public string LastName;
public Person(string first, string last)
{
this.FirstName = first;
this.LastName = last;
}
public string FullName {get => $"{LastName}, {FirstName}";} }
class Program
{
static void Main(string[] args)
{
List<Person> presidents = new List<Person>
{
new Person("George", "Washington"),
new Person("John", "Adams"),
new Person("Thomas", "Jefferson"),
new Person("James", "Madison"),
new Person("James", "Monroe")
};
}
}
Main
и посмотрите на значения элементов списка, вы увидите малозначащую строку {Person}
(см. рисунок ниже).Если вы хотите посмотреть свойства объекта
James Madison
, то вы должны знать, что он четвёртый в списке. Можно переопределить метод ToString
типа Person
, тогда отладчик вызовет его. Но это приведёт к оценке значения функции, что в сотню раз медленнее обычного вывода значения данных. Кроме того, вывод в отладчике может отличаться от желаемого вывода метода ToString
в программе. Поэтому определите атрибут DebuggerDisplay
следующим образом:[DebuggerDisplay("Name: {FullName,nq}")]Здесь атрибут приводит к выводу значения свойства
class Person
FullName
без кавычек (формат ‘nq
’ – см. форматы отладчика в предыдущем посте).Источник: https://devblogs.microsoft.com/visualstudio/7-hidden-gems-in-visual-studio-2017/