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

C#中如何初始化类内的数组类型成员(运行时确定数量)

解决动态初始化AClass.Titles数组的问题

针对你遇到的运行时才能确定Title数量的场景,有几种实用的初始化方式,推荐优先使用动态集合替代固定长度数组:

推荐方案:用List<BClass>替代数组

数组的长度是固定的,无法动态添加元素,而List<T>支持动态增删,更适配这种不确定数量的场景。只需修改AClass的定义:

public class AClass
{
    public int Ndx { get; set; }
    public string Author { get; set; }
    public List<BClass> Titles { get; set; } = new List<BClass>(); // 初始化空列表
}

填充数据时直接调用Add方法即可,无需提前关心数量:

var author = new AClass { Author = "张三" };
// 运行时逐个添加Title
author.Titles.Add(new BClass { Ndx = 1, Title = "C#入门指南" });
author.Titles.Add(new BClass { Ndx = 2, Title = ".NET进阶实战" });

// 如果后续需要转换成数组,直接调用ToArray()
BClass[] titleArray = author.Titles.ToArray();

坚持使用数组的两种方式

如果必须保留数组类型,可以用以下两种方式:

方式1:先收集所有元素再初始化数组

先用临时List<BClass>收集所有Title对象,确定数量后再转换成数组赋值:

var author = new AClass { Author = "李四" };
var tempTitles = new List<BClass>();

// 运行时添加数据
tempTitles.Add(new BClass { Ndx = 1, Title = "前端开发实战" });
tempTitles.Add(new BClass { Ndx = 2, Title = "React源码解析" });

// 初始化数组并赋值
author.Titles = tempTitles.ToArray();

方式2:先获取数量再创建数组

如果能提前通过接口或其他方式获取到Title的总数量,可以直接创建对应长度的数组,再逐个赋值:

var author = new AClass { Author = "王五" };
// 假设运行时获取到该作者有3个Title
int titleCount = 3;
author.Titles = new BClass[titleCount];

// 逐个填充数组元素
author.Titles[0] = new BClass { Ndx = 1, Title = "Python数据分析" };
author.Titles[1] = new BClass { Ndx = 2, Title = "机器学习实战" };
author.Titles[2] = new BClass { Ndx = 3, Title = "深度学习入门" };

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:22:43