System.NullReferenceException:将项目添加到列表时

时间:2018-07-15 23:39:04

标签: c# nullreferenceexception

尝试将项目添加到列表时遇到问题。我看到很多问题,但我仍然不明白。 这是我的定义:

public class DBStatus
    {
        [DataMember]
        public DBOperation Type { get; set; }
        [DataMember]
        public List<DBMessageType> Message { get; set; }
        [DataMember]
        public List<string> InnerException { get; set; }
    }

我声明了此类,并试图添加一个项目。

private void button19_Click_1(object sender, EventArgs e)
    {
        DBStatus dbstst = new DBStatus();
        dbstst.Message.Add(DBMessageType.INVALID_OR_EXPIRED_FUNCTION_REQUEST);
        dbstst.InnerException.Add("testing code");

        int k = 0;
    }

添加项目时出现System.NullReferenceException。

错误消息:“ System.NullReferenceException:'对象引用未设置为对象的实例。'”

我知道我的最后两个列表项是空声明,为什么我不能添加?

感谢您的帮助。

谢谢, PG

1 个答案:

答案 0 :(得分:0)

默认情况下,列表为空,您需要先初始化列表,然后才能向其中添加元素

选项1:

private void button19_Click_1(object sender, EventArgs e)
    {
        DBStatus dbstst = new DBStatus();

        dbstst.Message = new List<DBMessageType>();
        dbstst.Message.Add(DBMessageType.INVALID_OR_EXPIRED_FUNCTION_REQUEST);

        dbstst.InnerException = new List<string>();
        dbstst.InnerException.Add("testing code");

        int k = 0;
    }

选项2: 您也可以通过类构造函数执行此操作:

public class DBStatus
    {
        [DataMember]
        public DBOperation Type { get; set; }
        [DataMember]
        public List<DBMessageType> Message { get; set; }
        [DataMember]
        public List<string> InnerException { get; set; }

        public DBStatus(){ //initialize here
          Message = new List<DBMessageType>();
          InnerException = new List<string>();
        }
    }