有{}运营商吗?

时间:2015-09-24 12:23:03

标签: c# list

您可以使用

List<string> sList = new List<string>() { "1", "2" };

创建一个新列表并添加2个项目。 { "1", "2" } - 部分仅有效,因为List<T>已实施Add()方法。

我的问题:{}类似于运算符,可以重载,例如添加项目两次

1 个答案:

答案 0 :(得分:12)

  

是{}类似于运算符的东西,可以重载,例如加上   项目两次

任何提供Add方法,内置或作为扩展方法(starting from C#-6)的集合类型都可以使用{ }语法提供的集合初始值设定项。如果您的Add方法将相同的项目两次添加到该集合中,那么它就是这样做的。

如果您希望更改{ }的行为,则必须覆盖或重载集合上的Add方法。

一些额外的规范优点(取自this answer):

  

C#语言规范 - 7.5.10.3集合初始化程序

     

应用集合初始值设定项的集合对象   必须是实现System.Collections.IEnumerable或a的类型   发生编译时错误。对于每个指定的元素按顺序,   collection initializer用目标对象调用Add方法   元素初始值设定项的表达式列表作为参数列表,   为每次调用应用正常的重载决策。就这样   集合对象必须包含适用于每个的Add方法   元素初始化器。

相关问题