2013-11-18 2 views
1

Я новичок в Visual Basic, и мне нужна помощь. У меня есть следующие:Как использовать строку как переменную в Visual Basic

Dim var1 As String = "test1" 
Dim newvar As String = "var1" 
Dim othervar As String = "" 

Как я могу сделать содержимое othervar переменной быть «test1» с использованием только переменной newvar? Например:

othervar=newvar 

и содержимое переменной othervar быть "test1". Как использовать строку как переменную в Visual Basic? Я использую Visual Studio Express 2012

+0

Что вы на самом деле пытаетесь достичь? Этот синтаксис, который вы придумали, не существует. –

+0

Ближайшая вещь к тому, что вы ищете, это CallByName – peterG

+0

«Как я могу сделать содержимое переменной othervar be« test1 », используя только переменную newvar?» Это зависит от того, где объявлен 'var1'. Является ли это ** локальной ** переменной в методе (с двумя другими переменными)? ... или объявляется на уровне класса/формы? –

ответ

0

Если вы новичок в VB, вы можете найти этот сайт полезным: Visual Basic Language Features.

Если вы хотите установить переменную строку в той же строке другой переменной имеет место, вы просто использовать синтаксис, как вы уже:

Module Module1 

Sub Main() 
    Dim var1 As String = "test1" 
    Dim otherVar As String = var1 

    Console.WriteLine(var1) 'test1 
    Console.WriteLine(otherVar) 'test1 

    var1 = "test2" 

    Console.WriteLine(var1) 'test2 
    Console.WriteLine(otherVar) 'test1 (notice this did not change) 


End Sub 

End Module 
2

Как уже упоминалось 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 - это локальная переменная, тогда нет способа найти ее значение.

Смежные вопросы