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? P>
Quelque chose comme: p> suppose que j'ai déjà la variable code> la classe code> la classe a pris en charge, et le Le nom de la variable est contenant dans une chaîne appelée strine code>. p> p>
9 Réponses :
Non. Utilisez un tableau, sinon vous ne pouvez pas faire cela. P>
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 }); ...
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. P>
non, mais vous pouvez utiliser un dictionnaire
Utilisez un dictionnaire E.g. p>
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: Il n'y a pas d'autre moyen de "nommer" de manière dynamique une variable. P> p>
Vous ne pouvez pas faire cela, mais ce que vous cherchez à faire, c'est mendier pour un dictionnaire utilise:
C # 4.0, à l'aide des objets code> dynamiques code>:
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); } } }
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 code> 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.