vb.net - 尝试以字符串形式获取变量名 VB.NET

标签 vb.net variables reflection tostring var

我试图将变量的名称作为字符串返回。

所以如果变量是var1,我想返回字符串“var1”。

有什么办法可以做到这一点吗?我听说 Reflection 可能是在正确的方向。

编辑:

我本质上是试图使有组织的树 View 的实现更简单。
我有一个方法,你给两个字符串:rootName 和 subNodeText。 rootName 恰好是一个变量的名称。对此方法的调用来自此变量的 with 块。我希望用户能够调用 Method(.getVariableAsString, subNodeText) 而不是 Method("Variable", subNodeText)。想要以编程方式获取它的原因是可以简单地复制和粘贴此代码。我不想每次变量被命名为异常时都必须调整它。

Function aFunction()
   Dim variable as Object '<- This isn't always "variable".
   Dim someText as String = "Contents of the node"

   With variable '<- Isn't always "variable". Could be "var", "v", "nonsense", etc
      'I want to call this
      Method(.GetName, someText)
      'Not this
      Method("Variable",someText)

   End With
End Function

最佳答案

现在可以从 VB.NET 14 ( More information here ) 开始:

Dim variable as Object
Console.Write(NameOf(variable)) ' prints "variable"

编译您的代码时,您分配的所有变量名称都会更改。无法在运行时获取局部变量名称。但是,您可以使用 System.Reflection.PropertyInfo 获取类的属性名称
 Dim props() As System.Reflection.PropertyInfo = Me.GetType.GetProperties(BindingFlags.Public Or _
                                                                                     BindingFlags.Instance Or BindingFlags.DeclaredOnly)

 For Each p As System.Reflection.PropertyInfo In props
     Console.Write(p.name)
 Next

关于vb.net - 尝试以字符串形式获取变量名 VB.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14531021/

相关文章:

java - 为什么我在这里得到 java.lang.InstantiationException ?

java - 如何获取@XmlElement注释的值

vb.net - .NET 中的 IsNumeric() 占用了这么长时间的原因是什么?

c# - 如何使用相同的参数、返回类型和相同的名称调用在 C# 中定义的函数,但与 VB.NET 项目的大小写不同

asp.net - 我的数据库表未排序

javascript - JQuery/Javascript - 将文本与变量组合起来用作数组索引

javascript - for 循环中的变量

c# - 如何找到对程序集的依赖

c++ - 在 C++ 中使用变量创建部分文件名

java - Java动态创建类