您可以使用
List<string> sList = new List<string>() { "1", "2" };
Run Code Online (Sandbox Code Playgroud)
创建一个新列表并添加2个项目.该{ "1", "2" }双组分只能是因为List<T>已经实施了Add()方法.
我的问题:{}类似于操作员,可以重载,例如两次添加项目
Yuv*_*kov 12
是{}类似于操作符,可以重载,例如两次添加项目
任何提供Add方法,内置或作为扩展方法(从C#-6开始)的集合类型都可以使用{ }语法提供的集合初始值设定项.如果您的Add方法将相同的项目添加到该集合两次,那么它就是这样做的.
如果您希望{ }更改行为,则必须覆盖或重载Add集合上的方法.
一些额外的规范优点(取自这个答案):
C#语言规范 - 7.5.10.3集合初始化器
应用集合初始值设定项的集合对象必须是实现System.Collections.IEnumerable的类型,否则会发生编译时错误.对于按顺序的每个指定元素,集合初始值设定项在目标对象上调用Add方法,并将元素初始值设定项的表达式列表作为参数列表,为每次调用应用正常的重载决策.因此,集合对象必须包含每个元素初始值设定项的适用Add方法.