Как уже упоминалось peterG, CallByName() могут быть использованы. Это, однако, требует, чтобы переменная var1
быть объявлена как Public в класса (форма) уровень:
Public Class Form1
Public var1 As String = "test1"
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim newvar As String = "var1"
Dim othervar As String = CallByName(Me, newvar, CallType.Get)
MessageBox.Show(othervar)
End Sub
End Class
Если var1
является Private, то вы можете использовать Отражение как это (он все еще должен быть Класс переменной уровень):
Imports System.Reflection
Public Class Form1
Private var1 As String = "test1"
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim newvar As String = "var1"
Dim FI As FieldInfo = Me.GetType.GetField(newvar, BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic)
Dim othervar As String = FI.GetValue(Me)
MessageBox.Show(othervar)
End Sub
End Class
Обратите внимание, что если var1
- это локальная переменная, тогда нет способа найти ее значение.
Что вы на самом деле пытаетесь достичь? Этот синтаксис, который вы придумали, не существует. –
Ближайшая вещь к тому, что вы ищете, это CallByName – peterG
«Как я могу сделать содержимое переменной othervar be« test1 », используя только переменную newvar?» Это зависит от того, где объявлен 'var1'. Является ли это ** локальной ** переменной в методе (с двумя другими переменными)? ... или объявляется на уровне класса/формы? –