c# - 系统NullReferenceException : When adding item to a list

标签 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:

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>();
        }
    }

关于c# - 系统NullReferenceException : When adding item to a list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51353016/

相关文章:

c# - 是否有一种通用方法可以递归地检查反序列化对象的空字段?

c# - 使用 FIFO 进行过滤

c# - 在 PreviewTextInput 解析数字

c# - 找不到为什么我有空引用异常

C# 对象引用未设置为对象错误的实例

java - Mono 中的 SystemException 和 ApplicationException 与 Java 中的未检查和已检查异常相同吗?

c# - 从数据库读取 200MB 文件会抛出内存不足异常

c# - 向枚举添加构造函数(或函数)

C#如何连接公网ip

c# - 入队 C# 队列