Иллюстрированный самоучитель по Visual Basic .NET

Отладка объектно-ориентированных программ

Результат работы программы показан на рис. 4.11. Конечно, это совсем не то, что мы ожидали получить.

Иллюстрированный самоучитель по Visual Basic .NET › Классы и объекты › Отладка объектно-ориентированных программ
Рис. 4.11. Результат работы программы с ошибкой

В подобных ситуациях программу приходится отлаживать. Один из способов отладки описан ниже.

  • Нажмите кнопку Break в диалоговом окне, показанном на рис. 9.11.
  • Закройте окно (в данном примере – консольное), чтобы вернуться в IDE.

Установите точку прерывания (F9) в позиции, с которой должен начаться анализ состояния различных объектов программы, – в нашем примере логично установить ее в строке, предшествующей той, в которой произошло исключение (строка 9 листинга). Запустите программу командой Debug › Start (клавиша F5). Откройте окно локальных переменных и выведите его на передний план. На рис. 4.12 показано, как выглядит это окно. Рядом с именами объектных переменных aLink и aLinkedList расположены значки "+", на которых так и хочется щелкнуть.

Иллюстрированный самоучитель по Visual Basic .NET › Классы и объекты › Отладка объектно-ориентированных программ
Рис. 4.12. Окно локальных переменных в начале сеанса отладки.

Поскольку объектная переменная aLink соответствует третьей ссылке, очевидно, ссылка на предыдущий элемент не должна быть равна Nothing. Это наводит на мысль, что мы должны повнимательнее присмотреться к коду, в котором присваивается значение ссылки на предыдущий элемент.

Friend Sub New(ByVal myParent As Link. ByVal theData As String)
m_MyData = theData
m_ParentLink = Me
m_NextLink = myParent End Sub

Оказывается, мы перепутали операции присваивания ссылок и забыли задать ссылки из предыдущего элемента списка на текущий. Исправленный вариант этой функции должен выглядеть так:

Friend Sub NewtByVal myParent As Link, ByVal theData As String)
m_MyData = theData
m_ParentLink = myParent
m_ParentLink.m_NextLink = Me
End Sub

Возможности отладки не ограничиваются использованием окна локальных переменных. Например, вы можете установить условную точку прерывания по условию aLink Is Nothing или воспользоваться командой Add Watch контекстного меню в окне программы, когда программа находится в режиме прерывания. Впрочем, независимо от того, какой путь будет выбран, центральное место в процессе отладки занимает анализ состояния объектов.

Итоги

Глава получилась очень длинной. В ней вы познакомились с некоторыми встроенными классами .NET Framework, но главной темой была специфика работы с объектами в VB.NET. По сравнению с прежними версиями VB в этой области произошло много изменений, в основном принципиальных. В частности, были рассмотрены параметризованные конструкторы, значительно повышающие надежность создания объектов и их инициализацию. Короче говоря, в этой главе был изложен базовый материал, абсолютно необходимый для дальнейшего освоения VB.NET.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.