如https://learn.microsoft.com/de-de/visualstudio/code-quality/ca2227?view=vs-2019中所述,我有一个只读列表对象,如下所示:
public class MyClass {
public int id { get; set; }
public List<string> stringList { get; } = new List<string>;
}
但是如何通过向stringList
添加数据来初始化MyClass
呢?
MyClass test = new MyClass(){
id = 1,
stringList = ???
}
3条答案
按热度按时间8fsztsew1#
您可以使用不太明显的语法来处理集合初始值设定项:
但是处理只读属性的常用方法(直到C#9发布init only properties and records)是在构造函数中传递初始化值。
rqmkfv5c2#
您可以将
stringList
作为构造函数中的参数传递,并将属性赋给该参数:kulphzqa3#
如果您想向列表中添加一个或多个元素,可以使用@GuruStron提出的解决方案。
但是,如果你想添加一个集合,这就不起作用了。
但是你可以创建你自己定制的C#集合初始化器,创建一个扩展方法
Add
:现在编译上一个示例:
我建议将扩展方法放在
System.Collections.Generic
名称空间下,这样它将自动导入,而无需手动添加所需的using
。