gacar Ответов: 3

Как можно назначить переменную из строки


Привет,
У меня длинный код. Я привожу пример, который выглядит как код ниже. Следующий пример содержит ту же логику, что и мой код.

Как я могу вызвать переменную со строкой?

Итак, как я могу вызвать массив StrArr2 из StrArr1 в качестве имени переменной на первом шаге цикла?

Dim StrArr1 As String() = {"StrArr2"}
Dim StrArr2 As String() = {"StrArr3", "StrArr4"}
Dim StrArr3 As String() = {"-1"}
Dim StrArr4 As String() = {"StrArr5"}
Dim StrArr5 As String() = {"-1"}

Dim StrArr = StrArr1
Dim StrList As New List(Of String)

Start:
For Each s As String In StrArr
    StrList.Add(s)
    If s <> "-1" Then StrArr = s : GoTo Start 
Next


Что я уже пробовал:

Как можно присвоить значение StrArr

NotPolitcallyCorrect

"вызовите переменную со строкой?", вы этого не сделаете. Ничто из того, что вы здесь написали, не имеет для меня никакого смысла. Вы не называете переменные. Вы не вызываете массивы из других массивов. Если это та же самая "логика", что и ваш реальный код, вы должны начать все сначала.

Peter Leow

Я думаю, вы должны рассказать нам, чего вы намерены достичь вместо этого?

gacar

Я хотел бы вызвать много xml-файлов, которые связаны друг с другом. С приведенным выше примером я хочу построить эту структуру.

Maciej Los

Не уверен, чего ты хочешь достичь. Вы можете это объяснить?

Graeme_Grant

Покажите примеры XML-файлов, с которыми вы хотите работать, и объясните, что вы пытаетесь с ними сделать.

gacar

Забудь это. Могу ли я создать переменную программно?

Graeme_Grant

да

gacar

какими путями?

Graeme_Grant

Объясните конкретно, что вы пытаетесь сделать с примерами.

PIEBALDconsult

Может быть, вам нужен оператор switch/case?
Или Отражение?

3 Ответов

Рейтинг:
8

gacar

Я нашел это решение на здесь
Вроде как Мацей Лос

 Dim StrArr1 As String() = {"StrArr2"}
        Dim StrArr2 As String() = {"StrArr3", "StrArr4"}
        Dim StrArr3 As String() = {"-1"}
        Dim StrArr4 As String() = {"StrArr5"}
        Dim StrArr5 As String() = {"-1"}

        Dim StrArr = StrArr1
        Dim StrList As New List(Of String)

        
Start:
        For Each s As String In StrArr
            StrList.Add(s)
            Dim variables As New Dictionary(Of String, String())
            variables(s) = {"StrArr2"} ' Set the value of the "variable"
            If s <> "-1" Then StrArr = variables(s) : GoTo Start
    Next


Рейтинг:
21

Maciej Los

Не уверен, что я правильно вас понял, но нет никакого способа создать переменную программно из строки. Вы можете создать Словарь (Строки, Объекта)[^] , который может содержать имена переменных и их адреса.

Sub Main
	Dim StrArr1 As String() = {"StrArr2"}
    Dim StrArr2 As String() = {"StrArr3", "StrArr4"}
    Dim StrArr3 As String() = {"-1"}
    Dim StrArr4 As String() = {"StrArr5"}
    Dim StrArr5 As String() = {"-1"}

    Dim StrArr As Object

	Dim ListOfVariables As New Dictionary(Of String, Object)
	
	ListOfVariables.Add("StrArr1", StrArr1)
	ListOfVariables.Add("StrArr2", StrArr2)
	ListOfVariables.Add("StrArr3", StrArr2)
	ListOfVariables.Add("StrArr4", StrArr4)
	ListOfVariables.Add("StrArr5", StrArr5)
	
	StrArr = ListOfVariables("StrArr2")
	For Each s In StrArr
		Console.WriteLine(s)
	Next

End Sub


Возвращается:
StrArr3
StrArr4