如何在C#中使用动态名称创建变量?

我想在for循环中创建一个var,例如

for(int i; i<=10;i++) { string s+i = "abc"; } 

这应该创建变量s0,s1,s2 …到s10。

您可能想要使用数组。 我不确切知道它们是如何在c#中工作的(我是一个Java人),但是这样的事情应该这样做:

 string[] s = new string[10]; for (int i; i< 10; i++) { s[i] = "abc"; } 

并阅读http://msdn.microsoft.com/en-us/library/aa288453(VS.71).aspx

当您尝试重新定义变量“i”时,您的第一个示例将无法使用任何语言。 它是循环控件中的int ,但是循环体中的string

根据您更新的问题,最简单的解决方案是使用数组(在C#中):

 string[] s = new string[10]; for (int i; i< 10; i++) { s[i] = "abc"; } 

显然,这高度依赖于语言。 在大多数语言中,它是不可能的。 在Javascript中,在浏览器中,以下工作原理:

 for (var i = 0; i<10 ; i++) { window["sq"+i] = i * i; } 

现在,变量sq3例如设置为9。

你可以使用字典。 键 – 对象的动态名称值 – 对象

  Dictionary dictionary = new Dictionary(); for (int i = 0; i <= 10; i++) { //create name string name = String.Format("s{0}", i); //check name if (dictionary.ContainsKey(name)) { dictionary[name] = i.ToString(); } else { dictionary.Add(name, i.ToString()); } } //Simple test foreach (KeyValuePair kvp in dictionary) { Console.WriteLine(String.Format("Key: {0} - Value: {1}", kvp.Key, kvp.Value)); } 

输出:

 Key: s0 - Value: 0 Key: s1 - Value: 1 Key: s2 - Value: 2 Key: s3 - Value: 3 Key: s4 - Value: 4 Key: s5 - Value: 5 Key: s6 - Value: 6 Key: s7 - Value: 7 Key: s8 - Value: 8 Key: s9 - Value: 9 Key: s10 - Value: 10 

如果语言中有可用的某种eval请使用它。

这取决于语言。

通常,当人们想要这样做时,正确的方法是使用数据结构,例如存储键名和关联值的哈希表/字典/映射。