如何在C#中dynamic地命名variables?

有没有办法dynamic命名variables?

我需要做的是从input文件中获取variables名称列表,并使用这些名称创buildvariables。 这可能吗?

就像是:

Variable <dynamic name of variable here> = new Variable(input); 

假设我已经拥有了Variable类,并且variables的名称包含在名为strLine的stringstrLine

使用Dictionary<string, Variable>

例如

 var vartable = new Dictionary<string, Variable>(); vartable[strLine] = new Variable(input); 

C#4.0,使用dynamic对象:

 dynamic d = new ExpandoObject(); ((IDictionary<string, object>)d)["MyProperty"] = 5; int val = d.MyProperty; // 5 

不,但可以使用Dictionary<string, Variable> ,然后可以通过引用的名称引用每个variables。

你不能这样做,但你要做的是乞求一个字典使用:

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

试试这个,用户json序列化和反序列化:

  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); } } } 

在编译时应该知道variables名称。 如果您打算在运行时dynamic填充这些名称,则可以使用List<T>

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

不可以。但是,您可以将它们加载到Dictionary对象中。 这允许您仍然使用一个名称来引用它们(有点),这比使用Index更容易一些,就像使用Array或ArrayList一样。

我会使用某种键控集合,如散列表,字典或具有名称的结构列表。 然后您可以通过名称引用该variables:

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

没有其他方法来dynamic地“命名”一个variables。

不需要使用数组,否则你不能这样做。