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

有没有办法dynamic命名variables

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

就像是:

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

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

  • PHP中全局variables和函数参数之间的优缺点?
  • 从C函数返回string
  • 如果(cin >> x) - 为什么你可以使用这种情况?
  • LINES和COLUMNS脚本中丢失的环境variables
  • 如何在CMake中检索用户环境variables(Windows)
  • 什么是“var FOO = FOO ||” {}“(分配一个variables或一个空对象的variables)在JavaScript中的意思?
  • C编译错误:“可变大小的对象可能不会被初始化”
  • 在类__init中获取实例名__()
  • 9 Solutions collect form web for “如何在C#中dynamic地命名variables?”

    使用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。

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