Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 循环中的变量_C#_For Loop - Fatal编程技术网

C# 循环中的变量

C# 循环中的变量,c#,for-loop,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(); } for(int i=1;i您不需要

我想知道在“for”循环中是否有一种方法可以将值分配给根据其索引号命名的字符串变量

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

string message1 = null;
string message2 = null; 
string message3 = null;
我希望“for”循环执行类似以下代码的操作:

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

for(int i=1;i您不需要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)访问它们

还是为了

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
}
for(int i=0;i
你不能这样做(嗯,不合理)。你考虑过用字符串数组来代替吗?

我认为你应该用数组来表示这类变量

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

对于(inti=1;i可以使用数组还是列表类型

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

对于(int i=1;i,通常不使用名为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();  
}  

对于(int i=0;i我会用不同的方式来处理,可能会使用字典来存储您的消息。类似这样:

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

对于(int i=1;i您也可以不使用索引:

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

    foreach (String Message in Messages)
    {
        Response.Write("Hello " + Message + "<br />");
    }
string[]Messages={“汤姆”、“迪克”、“哈利”};
foreach(消息中的字符串消息)
{
回复。写“你好”+留言+“
”; }
您说过您不想使用switch语句。我知道这确实有一个switch,但如果您必须有三个不同的变量,您可以将您的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 message1=null;
字符串message2=null;
字符串message3=null;
void SetMessage(int i,字符串值)
{
如果(i==1)
message1=值;
等
}

对于(inti=1;i如果您将类中的变量声明为公共变量,则可以按如下方式访问它们:

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());

         }
    }




}
public分部类\u默认值:System.Web.UI.Page
{
公共字符串message1=null;
公共字符串message2=null;
公共字符串message3=null;
公共void setVars()
{

对于(int i=1;i是的,这是可能的。你称它为数组。
messagei
是一个未声明变量的名称。在C#中没有动态变量名称。可能的副本有很多替代方法来实现。但问题是(对你而言)是的,您的业务需要什么?在您的情况下,为每个变量指定适当的名称并通过读取相应的索引在该变量中存储适当的值可能是完美的。简单代码应该始终优先于使用奇特的API(例如,反射),然后当然使用消息[i]=“blabla”+i.ToString();+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());

         }
    }




}