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

如何创建属性类型为其他类的类实例?以含Telephone数组的Person类为例

创建Person类实例的解决方法

你代码的核心问题是:Person实例化后,Phones是数组引用类型,默认值为null,直接对p.Phones[0]赋值会触发空引用异常,按以下步骤操作即可:

  • 先给Person的基础属性赋值
  • 初始化Phones数组,提前指定可存储的电话号码数量
  • 创建Telephone类实例,赋值后存入数组对应下标位置

完整可运行示例代码

public class Person
{
    protected int id;
    public string Name { get; set; }
    public long Cpf { get; set; }
    public Telephone[] Phones { get; set; }
}

public class Telephone
{
    protected int id;
    public int Number { get; set; }
    public int Ddd { get; set; }
}

public static void Main(string[] args)
{
    // 实例化Person对象
    Person p = new Person();
    // 基础属性赋值示例
    p.Name = "测试用户";
    p.Cpf = 12345678901;

    // 初始化Phones数组,长度按你需要存储的号码数量设置,这里示例存1个号码
    p.Phones = new Telephone[1];

    // 实例化Telephone对象,赋值后存入数组
    p.Phones[0] = new Telephone()
    {
        Ddd = 010,
        Number = 12345678
    };
}

补充优化建议

如果电话号码的数量不固定,更推荐用List<Telephone>代替数组,无需提前指定长度,增删操作更灵活:

// 修改Person类的Phones属性定义
public List<Telephone> Phones { get; set; }

// 初始化与赋值写法
p.Phones = new List<Telephone>();
// 可直接Add多个号码
p.Phones.Add(new Telephone(){ Ddd = 010, Number = 12345678 });
p.Phones.Add(new Telephone(){ Ddd = 021, Number = 87654321 });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:54:05