循环中的变量

udi*_*old 3 c# for-loop

我想知道在"for"循环中是否有一种方法可以为根据其索引号命名的字符串变量赋值?

假设我有3个字符串变量:

string message1 = null;
string message2 = null; 
string message3 = null;
Run Code Online (Sandbox Code Playgroud)

我希望'for'循环执行类似下面的代码:

 for (int i = 1; i <=3; i++)
 {
   messagei = "blabla" + i.ToString();
 }
Run Code Online (Sandbox Code Playgroud)

我不想使用"if"或"switch",因为它会使代码更难以遵循.

有没有办法做到这一点?

Ant*_*ram 13

您不希望3个变量具有相同的名称,您需要这些变量的数组.

string[] messages = new string[3]; // 3 item array
Run Code Online (Sandbox Code Playgroud)

然后,您可以将项目存储在数组元素中

messages[0] = "Apple"; // array index starts at 0!
messages[1] = "Banana";
messages[2] = "Cherry"; 
Run Code Online (Sandbox Code Playgroud)

创建该数组的另一种方法是内联数组初始化器,保存一些代码

string[] messages = { "Apple", "Banana", "Cherry" }; 
Run Code Online (Sandbox Code Playgroud)

(注意:有更多有效的数组初始化语法.对各种其他方法的研究留作练习.)

并通过循环访问它们(foreach)

foreach (string fruit in messages)
{
    Console.WriteLine("I'm eating a " + fruit);
}
Run Code Online (Sandbox Code Playgroud)

或者

for (int i = 0; i < messages.Length; i++)
{
    Console.WriteLine("I'm eating a " + messages[i]); // reading the value
    messages[i] = "blabla" + i.ToString(); // writing a value to the array
}
Run Code Online (Sandbox Code Playgroud)