繁体   English   中英

foreach循环和数组值

[英]foreach loop and array values

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

我的问题是:

  1. 为什么服务器[0]和服务器[1]变为空。
  2. 如何保留所有数组值并将其传递到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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM