Хранить имя переменной в строке в VB.NET - PullRequest
3 голосов
/ 09 декабря 2008

Я пытаюсь сохранить имена некоторых переменных внутри строк. Например:

Dim Foo1 as Integer
Dim Foo1Name as String

' -- Do something to set Foo1Name to the name of the other variable --

MessageBox.Show(Foo1Name & " is the variable you are looking for.")
' Outputs:
' Foo1 is the variable you are looking for.

Это поможет отладке, над которой я работаю.

Ответы [ 5 ]

5 голосов
/ 09 декабря 2008

Ну, вы можете просто установить Foo1Name = "Foo1" - но я сильно подозреваю, что это не то, что вам нужно.

Как вы узнали бы, какую переменную вы пытаетесь найти по имени? Какая картина больше? То, что вы хотите, может быть возможно с отражением, если мы говорим о нелокальных переменных, но я подозреваю, что это или не выполнимо, или есть лучший способ решить проблему в первое место.

2 голосов
/ 09 декабря 2008

Имеет ли этот пример из msdn с помощью отражения?

1 голос
/ 09 декабря 2008

Я думаю, это действительно зависит от того, что вы пытаетесь отлаживать. Возможны две вещи: классы Reflection и StackTrace . Тем не менее, когда ваша программа компилируется, компилятор и среда выполнения не гарантируют, что эти имена должны соответствовать исходной программе.

Это особенно актуально для отладочных и релизных сборок. Смысл файлов .PDB (символов) в отладочной версии состоит в том, чтобы включать больше информации об исходной программе. Для родных приложений C / C ++ настоятельно рекомендуется создавать символы для каждой сборки (отладки + выпуска) вашего приложения, чтобы помочь с отладкой. В .NET это не проблема, поскольку есть такие функции, как Reflection. IIRC Джон Роббинс рекомендует всегда создавать символы и для проектов .NET.

Вы также можете найти блог Майка Сталла полезным и управляемый отладчик примеров.

1 голос
/ 09 декабря 2008

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

myArray("foo1Name") = "foo1"

Затем вы можете просто сохранить список имен ваших переменных или обернуть его в одном классе.

if( myArray(variableName(x)) == whatImLookingFor ) print variableName(x) & "is it"
0 голосов
/ 09 декабря 2008

Для поиска имени переменной см .: Поиск имени переменной, переданной функции

Это относится и к VB.Net.

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