C#如何一次性初始化包含类与列表成员的List集合
你这段代码里初始化List<clsClasses>失败的原因有两个:
clsClasses的无参构造是私有(clsClasses()没加public修饰符),没法直接用new()的方式创建实例后再初始化属性- 用对象初始化器时没明确指定属性名,编译器不知道你写的
new clsClassName(...)和List<clsStudentName>对应clsClasses里的哪个属性
下面给两种可行的解决方式:
方式一:用已有的有参构造直接初始化
直接复用clsClasses的带参构造函数,和你之前初始化MathClasses的写法一致:
private static readonly List<clsClasses> MeadowlarkClasses = new() { new clsClasses( new clsClassName(1, "Math"), new List<clsStudentName>() { new() { StudentID = 1, StudentFirstName = "Mother", StudentLastName = "Teresa" }, new() { StudentID = 2, StudentFirstName = "Father", StudentLastName = "Dowling" } } ) };
方式二:修改无参构造为public,用属性初始化器明确指定属性
先把clsClasses的无参构造改成public:
public clsClasses() { }
然后就可以用对象初始化器,明确指定clsClassNm和clsStudentNames属性:
private static readonly List<clsClasses> MeadowlarkClasses = new() { new clsClasses() { clsClassNm = new clsClassName(1, "Math"), clsStudentNames = new List<clsStudentName>() { new() { StudentID = 1, StudentFirstName = "Mother", StudentLastName = "Teresa" }, new() { StudentID = 2, StudentFirstName = "Father", StudentLastName = "Dowling" } } } };
内容的提问来源于stack exchange,提问作者FarmBoy594
相关产品推荐
相关产品推荐

