10
votes

Comment nommer des variables de manière dynamique dans C #?

Y a-t-il un moyen de nommer dynamiquement des variables?

Ce que je dois faire est de prendre une liste de noms de variables à partir d'un fichier d'entrée et de créer des variables avec ces noms. Est-ce possible?

Quelque chose comme: xxx

suppose que j'ai déjà la variable la classe la classe a pris en charge, et le Le nom de la variable est contenant dans une chaîne appelée strine .


4 commentaires

Parlez-vous de générer du code à compiler ou à faire quelque chose de dynamique au moment de l'exécution? S'il vous plaît dites-nous votre cas d'utilisation et vos raisons de vouloir faire cela.


Pourquoi voudriez-vous même faire cela? Comment ça compte même? Même si vous devez émettre le nom de la variable quelque part, vous pouvez stocker le nom dans variable classe.


Pouvez-vous expliquer pourquoi avez-vous posté cette question? Il y a peut-être de bonnes façons de faire ce que vous voulez


La raison pour laquelle je veux faire est que je crée un interprète pour un langage de programmation composé, et je dois pouvoir stocker des variables pour ladite langue.


9 Réponses :


-1
votes

Non. Utilisez un tableau, sinon vous ne pouvez pas faire cela.


0 commentaires

0
votes

Les noms de variables doivent être connus au moment de la compilation. Si vous avez l'intention de remplir ces noms de manière dynamique à l'exécution, vous pouvez utiliser un Liste code> .

 var variables = List<Variable>();
 variables.Add(new Variable { Name = input1 });
 variables.Add(new Variable { Name = input2 });
 ...


0 commentaires

0
votes

Non. Vous pouvez les charger dans un objet objet, cependant. Cela vous permet de les référer toujours (quelque peu) à l'aide d'un nom, qui est un peu plus facile que d'utiliser un index, comme vous le feriez avec une matrice ou une arraylist.


0 commentaires

1
votes

non, mais vous pouvez utiliser un dictionnaire , puis vous pouvez vous reporter à chaque variable par son nom indiqué.


0 commentaires

15
votes

Utilisez un dictionnaire .

E.g. xxx


0 commentaires

0
votes

J'utiliserais une sorte de collection clé, comme une hache, un dictionnaire ou une liste de structures avec le nom. Vous pouvez ensuite faire référence à la variable par nom: xxx

Il n'y a pas d'autre moyen de "nommer" de manière dynamique une variable.


0 commentaires

1
votes

Vous ne pouvez pas faire cela, mais ce que vous cherchez à faire, c'est mendier pour un dictionnaire utilise: xxx


0 commentaires

5
votes

C # 4.0, à l'aide des objets dynamiques : xxx


0 commentaires

1
votes

Essayez celui-ci, utilisateur JSON à Serialize et désérialisez:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Web.Script.Serialization;

    namespace ConsoleApplication1
    {
     public class Program
     {
        static void Main(string[] args)
        {
            object newobj = new object();

            for (int i = 0; i < 10; i++)
            {
              List<int> temp = new List<int>();

              temp.Add(i);
              temp.Add(i + 1);

               newobj = newobj.AddNewField("item_" + i.ToString(), temp.ToArray());
            }

       }

    }

    public static class DynamicExtention
    {
        public static object AddNewField(this object obj, string key, object value)
        {
            JavaScriptSerializer js = new JavaScriptSerializer();

            string data = js.Serialize(obj);

            string newPrametr = "\"" + key + "\":" + js.Serialize(value);

            if (data.Length == 2)
           {
               data = data.Insert(1, newPrametr);
            }
          else
            {
                data = data.Insert(data.Length-1, ","+newPrametr);
            }

            return js.DeserializeObject(data);
        }
     }
    }


0 commentaires