【发布时间】:2019-05-15 18:57:00
【问题描述】:
实例化新的空“列表”样式对象有两种替代样式:
var list = new SomeListType<int>();
或
var list = new SomeListType<int> { };
第一个依赖于允许基本构造函数设置对象,第二个似乎也隐式依赖于构造函数,但也指定了一个空的初始化列表。
(初始化器列表故意留空,说明它在某些情况下是否更易读或更清晰。)
这两种方法在实际或功能上有什么区别吗?
(注意——SomeListType 可以是任何可以像这样构造的东西——例如标准的List<T> 或一些自定义类。仅以int 为例)。
【问题讨论】:
-
选择任何你觉得更易读的东西。没有其他区别。两者都将使用默认构造函数。后者将为
{}中的每个项目调用Add。因为它是空的,所以没有区别。 -
提示:如果您想查看两行代码之间的真正区别:sharplab.io - here's this example - 查看 IL 结果(注意
A和B是除了名称相同),或者 C# 结果,如果它是具有有趣的 C# 生成代码(异步、表达式、迭代器等)的非平凡的东西
标签: c# list initializer