Comment faire pour attribuer de la valeur à l'aide de la chaîne VB.NET?

Envisager code suivant:

    Dim S1 As String = "a"

    'this is the string in a file
    Dim StringFromFile As String = "S1=hello"

    Dim temp() As String = Split(StringFromFile, "=", -1, CompareMethod.Binary)
    'temp(0) = variable name
    'temp(1) = variable value

    'my question is: how to assign value to S1?

Je l'ai déclaré à une chaîne de caractères nommée S1. Maintenant, je veux affecter une nouvelle valeur à la S1. La nouvelle chaîne de valeur est stockée dans un fichier en utilisant le format suivant: [nom de la variable][= comme séparateur][chaîne de valeur]. Comment puis-je attribuer la valeur de S1 après la récupération de la chaîne de nom de variable et de valeur stockées dans un fichier?

REMARQUE:

temp(0) = "S1"
temp(1) = "hello"

Il convient de noter que la chaîne avec les données proviennent d'un fichier qui peut changer de temps à autre! Lorsque le fichier est modifié, je veux les variables de changer.

De plus amples éclaircissements

J'ai besoin d'un morceau de code que lors du traitement d'une chaîne comme celle-ci "S1=bonjour", le code va d'abord trouver une variable déclarée (c'est à dire S1), puis les affecter à la variable S1 avec la chaîne "hello". Le "=" juste agi comme séparateur pour le nom de la variable et la valeur de la variable.

Mise à JOUR:

Ma tentative d'utilisation de Mathias lykkegaard a Lorenzen s EDIT 2 exemple mais a échoué avec "l'exception NullReferenceException" sur cette ligne "Field.SetValue(Me, VariableValue)". Merci de m'aider à résoudre le problème. Voici mon code sur la base de Mathias lykkegaard a Lorenzen s EDIT 2 exemple:

Public Sub Ask()
    Try
        Dim S1 As String = "a"

        Dim StringFromFile As String = "S1=hello"

        Dim temp() As String = Split(StringFromFile, "=", -1, CompareMethod.Binary)
        'temp(0) = variable name
        'temp(1) = variable value

        'my question is: how to assign value to S1?
        Dim TypeOfMe As Type = Me.GetType()

        'did this for readability.
        Dim VariableName As String = temp(0)
        Dim VariableValue As String = temp(1)

        'get the field in the class which is private, given the specific name (VariableName).
        Dim Field As FieldInfo = TypeOfMe.GetField(VariableName, BindingFlags.NonPublic Or BindingFlags.Instance)

        'set the value of that field, on the object "Me".
        Field.SetValue(Me, VariableValue) '<-- this line caused NullReferenceException
        MessageBox.Show(S1)
    Catch ex As Exception
        MessageBox.Show(ex.ToString)
    End Try

End Sub
En général, vous ne faites pas cela, même dans les langues qui prennent en charge ce type de chose. Vous gardez une table de hachage/dictionnaire de paires clé-valeur plutôt que les plats variables.
vérifier ma réponse - j'ai juste édité.
Bon, juste remarqué que vous souhaitez affecter des variables dynamiquement donné leur nom. Il y a une solution pour que, aussi, et je viens de modifier ma question de réfléchir.
Pizza à la poêle pls utiliser StringBuilder au lieu d'utiliser des Chaînes de caractères.
Je suis également d'avis qu'une table de hachage, dictionnaire, ou une autre clé=valeur de la paire de type de structure de données est une meilleure façon de gérer ces données.

OriginalL'auteur Pan Pizza | 2012-04-29