Como faço para nomear variables ​​dinamicamente em c #?

Existe uma maneira de nomear variables ​​dinamicamente?

O que eu preciso fazer é pegar uma lista de nomes de variables ​​de um arquivo de input e criar variables ​​com esses nomes. Isso é possível?

Algo como:

Variable  = new Variable(input); 

Suponha que eu já tenha a class Variable cuidada e o nome da variável esteja contido em uma string chamada strLine .

Use um Dictionary .

por exemplo

 var vartable = new Dictionary(); vartable[strLine] = new Variable(input); 

C # 4.0, usando os objects dynamic :

 dynamic d = new ExpandoObject(); ((IDictionary)d)["MyProperty"] = 5; int val = d.MyProperty; // 5 

Não, mas você poderia usar um Dictionary , e então você pode se referir a cada variável pelo seu nome entre aspas.

Você não pode fazer isso, mas o que você está procurando fazer é implorar por um uso do Dicionário:

 Dictionary d = new Dictionary(); d.Add("Variable1", value1); d.Add("Variable2", value2); d.Add("Variable3", value3); 

tente este, o usuário json para serializar e desserializar:

  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 temp = new List(); 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); } } } 

Os nomes das variables ​​devem ser conhecidos em tempo de compilation. Se você pretende preencher esses nomes dinamicamente em tempo de execução, poderá usar uma List .

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

Não. Você pode carregá-los em um object Dictionary , no entanto. Isso permite que você ainda os referencie (de alguma forma) usando um nome, o que é um pouco mais fácil do que usar um Index, como você faria com um Array ou ArrayList.

Eu usaria algum tipo de coleção com chave, como uma hashtable, dictionary ou lista de estruturas com o nome. Você pode então se referir à variável pelo nome:

 var value = variableDictionary["MyVariableName"]; var value = variableHashtable["MyVariableName"]; var value = variableList.First(x=>x.Name == "MyVariableName"); 

Não há outra maneira de “nomear” dinamicamente uma variável.

Não. Use uma matriz, caso contrário você não pode fazer isso.