You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#嵌套类赋值报错:Object reference not set to an instance of an object

问题原因与解决方案

问题本质

你遇到的Object reference not set to an instance of an object错误,根本原因不是Order类无法识别嵌套的Address类,而是Address类型的address属性在Order实例创建后仍为null。C#中引用类型的默认值是null,直接访问null对象的成员自然会触发空引用异常。

修复方案

方案1:手动实例化Address对象

在给address的属性赋值前,先创建Address的实例:

using ConsoleApp1.DataModels;

namespace WalmartOrderProcessing
{
    class Program
    {
         static void Main(string[] args)
        {
            Order myOrder = new Order();

            myOrder.name = "John Doe";
            myOrder.description = "Contractor";

            // 先实例化嵌套的Address类
            myOrder.address = new Order.Address();
            
            myOrder.address.city = "Chicago";
            myOrder.address.state = "IL";
            myOrder.address.zip = "12345";
        }
    }
}

方案2:在Order构造函数中自动初始化Address

修改Order类,在构造函数里直接初始化address属性,这样每次创建Order实例时,address都会自动被实例化:

namespace ConsoleApp1.DataModels
{
    public class Order { 
        public string name { get; set; }
        public string description { get; set; }
        public Address address { get; set; }

        // 添加构造函数初始化address
        public Order()
        {
            address = new Address();
        }
        
        public class Address 
        {
            public string city { get; set; }
            public string state { get; set; }
            public string zip { get; set; }
        }
    }
 }

这样业务代码无需改动,直接赋值address的属性即可。

方案3:使用C# 6.0+的自动属性初始化器

如果使用较新的C#版本,可以直接在属性声明时初始化address:

public Address address { get; set; } = new Address();

修改后的Order类:

namespace ConsoleApp1.DataModels
{
    public class Order { 
        public string name { get; set; }
        public string description { get; set; }
        // 自动初始化address属性
        public Address address { get; set; } = new Address();
        
        public class Address 
        {
            public string city { get; set; }
            public string state { get; set; }
            public string zip { get; set; }
        }
    }
 }

内容的提问来源于stack exchange,提问作者Jake_ss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:25:07