如何向已有对象添加嵌套对象列表属性?
解决嵌套列表属性的一次性初始化问题
你当前的代码报错是因为在对象初始化器中不能直接调用方法(比如Add()),对象初始化器的语法要求只能对属性进行赋值操作。对于List<T>类型的属性,C#提供了集合初始化器语法,可以直接在初始化时填充元素,实现一次性嵌套添加。
正确的写法示例
// Classes public class FirstList { public int Id { get; set; } public string Text { get; set; } } public class SecondList { public int Id { get; set; } public string Text { get; set; } public List<FirstList> Firsts { get; set; } = new List<FirstList>(); } public class ThirdList { public int Id { get; set; } public string Text { get; set; } public List<SecondList> Seconds { get; set; } = new List<SecondList>(); } // Program ThirdList item = new ThirdList { Id = 30, Text = "Third Text", Seconds = { new SecondList { Id = 20, Text = "Second Text", Firsts = { new FirstList { Id = 10, Text = "First Text" } // 可继续添加更多FirstList对象,用逗号分隔 } } // 可继续添加更多SecondList对象,用逗号分隔 } };
关键说明
- 对于已经默认初始化的List属性(比如你的代码里用
= new List<...>()完成了初始化),直接用{ 元素1, 元素2 }的集合初始化器语法就能添加元素,无需重新new List<...>。 - 如果List属性没有默认初始化,则需要先实例化再用集合初始化器,比如:
Firsts = new List<FirstList> { ... }。
这样就能一次性完成所有嵌套属性的初始化,不需要分步骤调用Add()方法。
内容的提问来源于stack exchange,提问作者Charlie Lipperd
相关产品推荐
相关产品推荐

