为什么我在这个foreach方法中得到一个NullReferenceException ?

本文关键字:一个 NullReferenceException foreach 为什么 方法 | 更新日期: 2023-09-27 18:01:57

int count = 0;
foreach (string s in Settings.Default.Name)
{
    count++;
}
Settings.Default.Name[count] = tb_add_name.Text;
Settings.Default.Save();

Settings.Default.Name是一个空字符串数组,但应该foreach -方法只是不开始,如果字符串数组是空的,而不是给我这个错误?

数组稍后会被单词填充。

为什么我在这个foreach方法中得到一个NullReferenceException ?

是的,但这不会改变count仍然为0的事实,您仍然执行Settings.Default.Name[count] = tb_add_name.Text;

所以你仍然应该检查索引是Valid还是null。比如:

if(Settings.Default.Name != null && Settings.Default.Name.Count > 0)

顺便说一下,你的方法总是会导致IndexOutOfRange异常,因为你的foreach循环基本上将你的count变量设置为Array的大小,而Array[Array.Length]总是超出范围。

可以使用Array Length属性。

if(Settings.Default.Name.Count > 0)
{
    int count = 0;
    foreach (string s in Settings.Default.Name)
    {
        count++;
    }
    Settings.Default.Name[count] = tb_add_name.Text;
    Settings.Default.Save();
}
相关文章: