我想在for循环中创建一个var,例如
for(int i; i<=10;i++)
{
string s+i = "abc";
}
这应该创建变量s0,s1,s2 ...到s10。
答案 0 :(得分:11)
您可能想要使用数组。我不确切知道它们是如何在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
答案 1 :(得分:4)
您尝试重新定义变量“i”时,您的第一个示例将无法使用任何语言。它在循环控件中是int
,但在循环体中是string
。
根据您更新的问题,最简单的解决方案是使用数组(在C#中):
string[] s = new string[10];
for (int i; i< 10; i++)
{
s[i] = "abc";
}
答案 2 :(得分:3)
显然,这高度依赖于语言。在大多数语言中,它是不可能的。在Javascript中,在浏览器中,以下工作:
for (var i = 0; i<10 ; i++) { window["sq"+i] = i * i; }
现在,变量sq3设置为9。
答案 3 :(得分:3)
您可以使用字典。 键 - 对象的动态名称 价值 - 对象
Dictionary<String, Object> dictionary = new Dictionary<String, Object>();
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<String, Object> 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
答案 4 :(得分:0)
如果语言可用,请使用某种eval
。
答案 5 :(得分:0)
这取决于语言。
通常当人们想要这样做时,正确的做法是使用数据结构,例如存储键名和相关值的哈希表/字典/映射。