[英]foreach loop and array values
我正在编写一个简单的foreach循环,以从appconfig文件读取键值。 由于某种原因,每次foreach循环递增时,称为服务器的数组字符串都会释放先前的值。 程序运行完成后,我看到的值为(server [0] = null,server [1] = null,server [2] =)。 只有最后一个数组指针服务器[3]保留这些值。
我的问题是:
如何保留所有数组值并将其传递到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 + 1
和max + 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.