使用for循环索引访问变量的名称

时间:2015-04-23 00:24:48

标签: c# variables for-loop

我们说我有4个字符串。

private string string_1, string_2, string_3, string_4;

然后让我说我有一个for循环。如何通过for循环的索引访问变量名?以下是我在谈论的内容:

for(int i = 0; i < 4; i++)
{
    string_ + i = "Hello, world! " + i;
}

据我所知,上述操作无法编译。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

string[] hello = new string[4];
for(int i = 0; i < 4; i++)
{
    hello[i] = "Hello, world! " + i;
}

如果您需要可变长度列表,请使用实现ICollection<string>的类型,例如Dictionary<string>HashSet<string>List<string>

答案 1 :(得分:1)

你不能做你要问的事 - 至少直接做。

您可以从简单地将字符串放入数组开始,然后从数组中继续工作。

string[] strings = new []
{
    string_1,
    string_2,
    string_3,
    string_4,
};

for(int i = 0; i < 4; i++)
{
    strings[i] = "Hello, world! " + i;
}

Console.WriteLine(string_3); // != "Hello, world! 2"
Console.WriteLine(strings[2]); // == "Hello, world! 2"

但是原来的string_3没有改变,尽管它在数组中的插槽是正确的。

你可以更进一步,这样做:

Action<string>[] setStrings = new Action<string>[]
{
    t => string_1 = t,
    t => string_2 = t,
    t => string_3 = t,
    t => string_4 = t,
};

for(int i = 0; i < 4; i++)
{
    setStrings[i]("Hello, world! " + i);
}

Console.WriteLine(string_3); // == "Hello, world! 2"

这与最初的预期相同 - string_3确实会更新。虽然这有点人为,但可能对你有用。

答案 2 :(得分:-1)

将字符串放入数组中,然后使用for循环遍历数组。在迭代数组时,在数组的第i个元素上调用命令。

String[ ] array = ["a", "b","c"];
for(int i = 0; i < array.length ; i++)
// print array[i]