循环中的变量
本文关键字:变量 循环 | 更新日期: 2023-09-27 18:18:49
我想知道是否有一种方法在"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",因为这会使代码更难理解。
有办法吗?
你不需要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
}
可以使用数组吗?还是列表类型?
string[] messages = new string[3];
for (int i = 1; i <=3; i++)
{
messages[i] = "blabla" + i.ToString();
}
您说过您不想要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());
}
不是最优的解决方案,但如果你必须有单独的变量,它会隐藏混乱。
你不能那样做(嗯,不理智)。你考虑过使用字符串数组吗?
我认为你应该用数组来保存这类变量。
string[] message = new string[3];
for (int i = 1; i <=3; i++)
{
message[i] = "blabla" + i.ToString();
}
通常不使用N个不同的变量命名为1,2,…,方法是将它们存储在数组中:
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开始;)
我会用不同的方式来处理它,也许使用字典来存储您的消息。像这样:
Dictionary<string, string> messages = new Dictionary<string, string>();
for(int i = 1; i <= 3; i++)
{
messages.Add("message" + i.ToString(), i.ToString());
}
您也可以不使用索引:
string[] Messages = { "Tom", "Dick", "Harry" };
foreach (String Message in Messages)
{
Response.Write("Hello " + Message + "<br />");
}
如果你在一个类中将变量声明为公共变量,你可以如下方式访问它们:
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());
}
}
}