循环中的变量

时间:2011-12-27 14:58:58

标签: c# for-loop

我想知道在“for”循环中是否有办法为根据索引号命名的字符串变量赋值?

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

string message1 = null;
string message2 = null; 
string message3 = null;

我希望'for'循环能够执行以下代码:

 for (int i = 1; i <=3; i++)
 {
   messagei = "blabla" + i.ToString();
 }

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

有办法吗?

9 个答案:

答案 0 :(得分:13)

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

string[] messages = new string[3]; // 3 item array

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

messages[0] = "Apple"; // array index starts at 0!
messages[1] = "Banana";
messages[2] = "Cherry"; 

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

string[] messages = { "Apple", "Banana", "Cherry" }; 

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

通过循环(foreach)访问它们

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

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
}

答案 1 :(得分:2)

你可以使用数组吗?或列表类型?

string[] messages = new string[3];
for (int i = 1; i <=3; i++)
 {
   messages[i] = "blabla" + i.ToString();
 }

答案 2 :(得分:1)

你说你不想要一个switch语句。我意识到这确实有一个开关,但如果你必须有三个不同的变量,你可以将你的开关封装在一个函数调用中:

string message1 = null;
string message2 = null; 
string message3 = null;

void SetMessage(int i, string value)
{
    if(i == 1)
        message1 = value;
    etc
}

 for (int i = 1; i <=3; i++)
 {
   SetMessage(i, "blabla" + i.ToString());
 }

不是最佳解决方案,但如果你必须有单独的变量,它将隐藏混乱。

答案 3 :(得分:0)

你做不到(好吧,不是理智)。您是否考虑过使用字符串数组?

答案 4 :(得分:0)

我认为你应该为这种变量使用数组。

string[] message = new string[3];
for (int i = 1; i <=3; i++)
{
     message[i] = "blabla" + i.ToString();
}

答案 5 :(得分:0)

通常不是将N个不同的变量命名为1,2,...,N,而是将它们存储在数组中:

string message[3];
message[0] = null;
message[1] = null;
message[2] = null; 

然后循环:

for (int i = 0; i <=2; i++)  
{  
   message[i] = "blabla" + i.ToString();  
}  

请注意,通常,一组索引变量以值0开始;)

答案 6 :(得分:0)

我会稍微改变一下,也许使用字典并存储你的消息。像这样:

 Dictionary<string, string> messages = new Dictionary<string, string>();
 for(int i = 1; i <= 3; i++)
 {
      messages.Add("message" + i.ToString(), i.ToString());
 }

答案 7 :(得分:0)

您也可以在没有索引的情况下执行此操作:

    string[] Messages = { "Tom", "Dick", "Harry" };

    foreach (String Message in Messages)
    {
        Response.Write("Hello " + Message + "<br />");
    }

答案 8 :(得分:-1)

如果您将类中的变量声明为公共变量,则可以按如下方式访问它们;

public partial class _Default : System.Web.UI.Page
{
    public string message1 = null;
    public string message2 = null; 
    public string message3 = null;


    public void setVars()
    {
        for (int i = 1; i <=3; i++)
         {
             this.GetType().GetField("message" + i.ToString()).SetValue(this, "blabla" + i.ToString());

         }
    }




}