2014-12-05 111 views
0

在javascript中我可以做将价值分配给变量基于另一个变量的值

var thing="MyVar"; 
var MyVar; 
this[thing] = 33; 

设置基于另一个值的变量的值。所以在这种情况下,它将值33设置为变量事物的值。

edit-然后这将设置MyVar的值为33,如果我有另一个值的事情说otherVar它将设置otherVar的值为33!

有什么办法可以在VB.Net中做到这一点?

+0

你可以使用粘土项目。 – 2014-12-05 14:13:39

+1

看看[这里](http://stackoverflow.com/questions/6332097/using-a-variable-variable-name-in-visual-basic)和[这里](http://stackoverflow.com/questions/15356108 /使用字符串作为变量的名称) – T30 2014-12-05 14:25:40

+1

在vb.net中使用'Dictionary(Of String,Integer)' – 2014-12-05 14:31:34

回答

0

下面是的WinForms,将与字段或属性的工作使用反射的例子:

Public Class Form1 

    Private MyVar As Integer 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim thing As String = "MyVar" 
     Dim value As Integer = 33 
     Try 
      Dim FI As System.Reflection.FieldInfo = Me.GetType.GetField(thing, Reflection.BindingFlags.IgnoreCase Or Reflection.BindingFlags.Instance Or Reflection.BindingFlags.Public Or Reflection.BindingFlags.NonPublic) 
      If Not IsNothing(FI) Then 
       FI.SetValue(Me, value) 
      Else 
       Dim PI As System.Reflection.PropertyInfo = Me.GetType.GetProperty(thing, Reflection.BindingFlags.IgnoreCase Or Reflection.BindingFlags.Instance Or Reflection.BindingFlags.Public Or Reflection.BindingFlags.NonPublic) 
       If Not IsNothing(PI) Then 
        PI.SetValue(Me, value) 
       Else 
        MessageBox.Show(value, "Field or Property not found!") 
       End If 
      End If 
     Catch ex As Exception 
      MessageBox.Show(ex.Message, "Unable to Set Value") 
     End Try 

     Debug.Print("MyVar = " & MyVar) 
    End Sub 

End Class 

如果你使用这个,不过,你可能有一个糟糕的设计到应用程序。