实例化一个新的空“列表”样式对象有两种替代样式:
var list = new SomeListType<int>();
或
var list = new SomeListType<int> { };
第一个依赖于允许基本构造函数设置对象,第二个似乎也隐式依赖于构造函数,但还指定了一个空的初始化列表。
(初始化器列表有意留为空白,例如在某些情况下看起来更可读或更清晰。)
这两种方法之间在实用性或功能性方面是否有所不同?
(请注意-SomeListType
可以是可以这样构造的任何东西-例如标准List<T>
或某些自定义类。仅以int
为例)。
答案 0 :(得分:2)
对于两个选项,即使生成的IL代码也将相同:
newobj instance void class Namespace.SomeListType`1<int32>::.ctor()
所以根本没有功能上的差异。
答案 1 :(得分:1)
您编写的两行将编译相同。区别在于,在第二个版本中,您可以通过在花括号中添加项目来初始化列表(前提是您的列表实现了ICollection<T>
接口或提供了相应的Add
方法:
var list = new SomeListType<int> { 1, 2, 3, 4 };