实例化新的空“列表”样式对象有两种替代样式:

var list = new SomeListType<int>();


要么

var list = new SomeListType<int> { };


第一个依赖于允许基本构造函数设置对象,第二个似乎也隐式依赖于该构造函数,但还指定了一个空的初始化程序列表。

(初始化器列表故意留空,例如在某些情况下它似乎更具可读性或清晰性。)

这两种方法之间在实践或功能上有什么区别吗?


(注意-SomeListType可以是可以这样构造的任何东西-例如标准List<T>或某些自定义类。仅使用int为例)。

最佳答案

对于这两个选项,即使生成的IL代码也将相同:

newobj instance void class Namespace.SomeListType`1<int32>::.ctor()


因此根本没有功能上的差异。

关于c# - 初始化程序语法与无参数构造函数语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53780826/

10-12 03:20