内联使用或不使用'()'来初始化列表之间是否有任何细微差别?

时间:2014-06-27 07:57:36

标签: c# list initialization

E.g。调用之间有什么技术差异:

List<string> list = new List<T> () { "one", "two", "tree" };  // with ()

List<string> list = new List<T> { "one", "two", "tree" };    // without ()

结果显然是一样的。但是我感兴趣的是调用方式有什么技术差异,或者这只是一个方便的.NET C#快捷方式。

2 个答案:

答案 0 :(得分:5)

没有区别。将集合初始值设定项与默认构造函数一起使用时,不需要括号。但是,如果要使用其他构造函数,则不能省略括号。

一些代码重构工具(如ReSharper)将通过将括号显示为冗余来指示这一点。

集合初始值设定项不限于“内置”.NET类型。实现IEnumerable并提供合适的Add方法的类型可以使用集合初始值设定项。

答案 1 :(得分:1)

两者都会实际编译成

List<string> list;
List<string> temp;
temp = new List<string>();
temp.Add("one");
temp.Add("two");    
temp.Add("tree");
list = temp;

如果你检查生成IL代码。