3

我正在尝试将一些变量的名称存储在字符串中。例如:

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.

这将有助于我正在进行的一些调试。

4

5 回答 5

5

好吧,您显然可以设置 Foo1Name = "Foo1" - 但我强烈怀疑这不是您所追求的。

你怎么知道你试图找到哪个变量的名字?更大的图景是什么?如果我们谈论的是非局部变量,你想要的可能通过反射实现,但我怀疑它要么不可行,要么首先有更好的方法来解决问题。

于 2008-12-09T15:36:49.627 回答
2

这个来自 msdn 的示例使用反射有帮助吗?

于 2008-12-09T15:44:28.363 回答
1

一种解决方案是使用关联数组来存储变量。曾经,我在 .Net 中做过这个,但我想我写了一个自定义类来做这个。

myArray("foo1Name") = "foo1"

然后,您可以只存储变量名称列表,或者您可以将其包装在同一个类中。

if( myArray(variableName(x)) == whatImLookingFor ) print variableName(x) & "is it"
于 2008-12-09T15:45:12.010 回答
1

我认为这实际上取决于您要调试的内容。两个可能的东西是ReflectionStackTrace类。也就是说,当您的程序被编译时,编译器和运行时不保证这些名称需要与原始程序一致。

调试与发布版本的情况尤其如此。调试版本中的 .PDB 文件(符号)的重点是包含有关原始程序的更多信息。对于本机 C/C++ 应用程序,强烈建议您为应用程序的每个构建(调试+发布)生成符号以帮助调试。在 .NET 中,这不是一个问题,因为有反射之类的功能。IIRC John Robbins建议您也始终为 .NET 项目生成符号。

您可能还会发现 Mike Stall 的博客和托管调试器示例很有用。

于 2008-12-09T15:55:13.817 回答
0

要查找变量名,请参阅:查找传递给函数的变量名

这也适用于 VB.Net。

于 2008-12-09T15:46:30.200 回答