对象引用未设置为对象的实例.错误,我可以';t决心

本文关键字:我可以 决心 错误 设置 对象 实例 对象引用 | 更新日期: 2023-09-27 18:27:50

我有这样的代码(这只是一个片段):

public static CpOfferInterfaceInfo Get()
    {
        return new CpOfferInterfaceInfo
         {
             Roles = new List<Role>
             {
                new Role
                {
                    RoleType = RoleType.Cp,
                    Statuses = new List<Status>
                    {
                        new Status
                        {
                            StatusEnum = StatusEnum.CpCreatedNew,
                            DisplayAs = "Sent",
                            Functions = { 1,2,3 }
                        },
                        new Status
                        {
                            StatusEnum = StatusEnum.NcpDeclined,
                            DisplayAs = "Declined",
                            Functions = { 4 }
                        },

当天早些时候工作得很好,我更改了一件小事(Function={1,3,5}子句),现在我得到了这个错误:

对象引用未设置为对象的实例。

描述:在执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误以及错误在代码中的来源的更多信息。

异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。

来源错误:

Line 11:         public static CpOfferInterfaceInfo Get()
Line 12:         {
Line 13:             return new CpOfferInterfaceInfo
Line 14:              {
Line 15:                  Roles = new List<Role>

这是Status的C#类:

public class Status
    {
        public StatusEnum StatusEnum { get; set; }
        public string DisplayAs { get; set; }
        public ICollection<int> Functions { get; set; }
    }

代码已编译,但在运行时失败。有人对此有任何想法或经验吗?我可以更改/尝试/测试什么?

对象引用未设置为对象的实例.错误,我可以';t决心

我怀疑以前您有:

Functions = new List<int> { 1,2, 3 }

在对象初始值设定项中构造的Status实例上设置属性。您当前的代码,如下所示:

Functions = { 1,2,3 }

只调用newObject.Functions.Add(1);(etc)-当Functions为null时,这是不起作用的,默认情况下为null。

备选方案:

  • 返回显式创建集合
  • 更改Status代码为您创建集合:

    public class Status
    {
        public StatusEnum StatusEnum { get; set; }
        public string DisplayAs { get; set; }
        private readonly ICollection<int> functions = new List<int>;
        public ICollection<int> Functions { get { return functions; } }
    }