VB2010: просмотр структуры объекта для целей обучения / визуализации - PullRequest
0 голосов
/ 02 сентября 2011

Мне было интересно, есть ли способ взять объект в Visual Basic 2010 (Express, FWIW) и просмотреть его структуру, чтобы визуализировать, как располагаются данные внутри.

Например, у меня есть объект под названием "модель", который заполняется функцией, которая для меня является черным ящиком. Модель устанавливается функцией «чтения», которая загружает файл DXF с диска. Функция чтения не очень хорошо документирована.

То, что я обнаружил, - это то, что модель. Объекты содержат список различных объектов, все с разными свойствами. Я хотел бы иметь возможность просто просматривать этот список объектов и просматривать связанные с ними свойства и значения во время выполнения, подобно тому, как вы можете использовать Intellisense для просмотра списка, просто набрав «бла». и ждем появления всплывающего окна.

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

Возможно ли это в Visual Basic 2010? Это встроенная функция, которую я не могу найти?

Спасибо!

1 Ответ

2 голосов
/ 02 сентября 2011

Если функция возвращает объект, то этот объект где-то имеет определение класса.Щелкните правой кнопкой мыши ссылку в VS и выберите «Просмотр в браузере объектов», и вы увидите макет класса со всеми свойствами и методами.Вам также не нужно делать это во время выполнения.

Если вы хотите копать еще глубже, вам следует проверить Отражатель .

РЕДАКТИРОВАТЬ

После прочтения ваших комментариев я обычно делаю одно из трех, когда пытаюсь это сделать:

  1. Использование окна Autos and Locals
  2. Использование непосредственного окна
  3. Использование «точки останова и зависания»

Использование окна «Авто и местные»

УстановкаТочка останова и проверить окна Autos и Locals.Если вы их не видите, они находятся в главном меню в Debug, Windows.Это позволяет вам просматривать дерево ваших переменных.Иногда здесь может быть много чего, поэтому я обычно использую один из двух других методов ниже.

Используйте Immediate Window

Immediate Window (IW) позволяет вводить выражения и распечатывать значения.Это не вид дерева, как вы хотите, но он позволяет вам по крайней мере охотиться и клевать.Если вы представляете следующий короткий и простой код и ставите точку останова во второй строке:

Dim Names As New List(Of String)({"Alice", "Bob", "Chuck"})
Console.WriteLine(Names)

В IW вы можете набрать:

?Names

И он выдаст:

Count = 3
    (0): "Alice"
    (1): "Bob"
    (2): "Chuck"

Символ знака вопроса означает «печать».Вы можете напечатать практически любое допустимое выражение для печати:

?Names(0)
"Alice"
?Names(0).Substring(0,1)
"A"
?Names(0).Contains("ice")
True

И когда вы делаете все это, вы получаете IntelliSense обо всем, что происходит.

Use "точка останова и наведение "

Я не думаю, что это имя имеет имя, выходящее за пределы IntelliSense, но как только вы достигнете точки останова, вы можете навести курсор на любую переменную и проверить ее текущие значения.Иногда вы будете получать предупреждение о том, что проверка вызовет некоторую обработку, но, поскольку вы отлаживаете, только это должно быть хорошо.Иногда, когда я отлаживаю коллекцию, я создаю переменную, специфичную для одного элемента в коллекции, просто чтобы упростить эту технику.Я избавлюсь от этого, как только закончу отладку, но это действительно поможет этому процессу.

Есть ли еще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...