2008-12-09 97 views
3

我试图在字符串中存储一些变量的名称。例如:在VB.NET中存储字符串中的变量名

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. 

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

+0

我讨厌那个家伙,但这真的不是你做任何事情的方式 – Shawn 2008-12-09 18:09:44

回答

5

那么,你可以清楚地设置Foo1Name =“Foo1” - 但我强烈怀疑这不是你所追求的。

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

+0

这个变量会根据异常的出现而知道。我有一个由许多控件组成的表单,并希望将变量的名称存储在数据库表(自动化负载测试)中。反射或类似System.Enum.GetNames(GetType(EnumName))但带有变量的是我在想的。 – 2008-12-09 15:47:50

+0

但是当你说“变量会被知道” - 以什么方式?什么会知道它,以什么形式? – 2008-12-09 15:49:00

2

是否this msdn使用反射帮助的例子?

1

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

myArray("foo1Name") = "foo1" 

然后,你可以只存储你的变量名称列表,或者你可以把它包装在同一个类中。

if(myArray(variableName(x)) == whatImLookingFor) print variableName(x) & "is it" 
1

我认为这真的取决于你想要调试的东西。需要注意的两个可能的事情是ReflectionStackTrace类。这就是说,当你的程序被编译时,编译器和运行时不能保证这些名字需要与原始程序保持一致。

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

您可能还会发现Mike Stall的blog有用样本和managed debugger样本。

相关问题