C# 列表对象初始化

C# 列表对象初始化,c#,list-initialization,C#,List Initialization,我有一个基本的概念上的疑问,一直在寻找一个答案有一段时间了。我已按以下方式初始化了列表: List<string> list = new List<string>() { "a", "b", "c" }; 就在这一次,我错过了,并以以下方式对其进行了初始化: List<string> list = new List<string> { "a", "b", "c" }; 未引发编译时或运行时错误。所以我想知道第二种方法是否正确?两者的区别是什么?

我有一个基本的概念上的疑问,一直在寻找一个答案有一段时间了。我已按以下方式初始化了列表:

List<string> list = new List<string>() { "a", "b", "c" };
就在这一次,我错过了,并以以下方式对其进行了初始化:

List<string> list = new List<string> { "a", "b", "c" };

未引发编译时或运行时错误。所以我想知道第二种方法是否正确?两者的区别是什么?

两者都做相同的工作,哪里是可选的

在第一个示例中,编译器知道您正在调用默认构造函数

  List<string> list = new List<string> { "a", "b", "c" };
在第二种情况下,显式调用默认构造函数

  List<string> list = new List<string>() { "a", "b", "c" };

这是可选的,没有区别。如果您查看IL,它应该是相同的。在向构造函数提供参数时必须使用,否则在使用对象初始值设定项时可以忽略它们。我现在就知道了,谢谢: