foreach循环和数组值

我正在编写一个简单的foreach循环来从appconfig文件中读取关键值。 出于某种原因,每次foreach循环递增时,称为服务器的数组字符串都会丢失先前的值。 一旦程序运行完成,我会将值看作(server [0] = null,server [1] = null,server [2] =)。 只有最后一个数组指针服务器[3]保留这些值。

我的问题是:

  • 为什么服务器[0]和服务器[1]变为空。
  • 我如何保留所有的数组值并将它们传递到foreach循环之外?

    private void button2_Click(object sender, EventArgs e)
    {
        int i = 0;
        int max = 0;
        string[] server;
    
        foreach (string key in System.Configuration.ConfigurationManager.AppSettings)
        {
            max = max + 1;
        }
    
        foreach (string key in System.Configuration.ConfigurationManager.AppSettings)
        {
            server = new string[max];
            server[i] = key;
            MessageBox.Show(server[i]).ToString();
            i = i + 1;
        }
    }
    

  • server = new string[max];
    

    应该在循环之外(在你的情况下,在两者之间),否则你每次迭代都会创建一个新的数组。 这解释了为什么最后一个值是正确的,剩下的是空的。

    此外,您可以使用++而不是i + 1max + 1


    Evan说的 - 同样,考虑使用LINQ来使你的代码更具可读性,并避免类似的错误:

    var server = System.Configuration.ConfigurationManager.AppSettings
                 .Cast<string>().ToList();
    
    foreach (string key in server)
        MessageBox.Show(key);
    

    埃文是完全正确的。 除此之外,我建议用第一个foreach循环替换

    max = System.Configuration.ConfigurationManager.AppSettings.Count;
    
    链接地址: http://www.djcxy.com/p/52749.html

    上一篇: foreach loop and array values

    下一篇: Concat all strings inside a List<string> using LINQ