为什么我得到 NullReferenceException

本文关键字:NullReferenceException 为什么 | 更新日期: 2023-09-27 18:31:15

我有一个接口

public interface IConfig
{
    string name { get; set; }
    string address { get; set; }
    int phone { get; set; }
    List<string> children { get; set; }
}

这是我的配置文件,它只有三个应用程序设置,而不是像我在界面中那样有四个。

<add key="name" value="abc" />
<add key="address" value="100 Norin Street" />
<add key="phone" value="709-111-111111" />

现在在启动时,我正在使用DictionaryAdapterFactory来填写app.config文件值。我在这里成功获取了 app.config 的值。

private readonly IConfig _config;
private readonly DictionaryAdapterFactory _factory;
_factory = new DictionaryAdapterFactory();
_config = _config.GetAdapter<IConfig>(ConfigurationManager.AppSettings);

现在在运行时,我需要填写列表类型的子值。但是我得到空异常。为什么?

//loop
_config.children.Add(item.values);

这里有什么问题?

为什么我得到 NullReferenceException

某处缺少列表初始化?

_config.children = new List<string>()

会像下面这样吗?

_config.children.AddRange(item.values); 

当然,初始化也是必需的。

_config.children = new List<string>();

您在界面中将"Phone"定义为int,而AppSettings中的电话值不能转换为int。

  string phone { get; set; }