e.g:
IList<object> objects = new List<object>
{
new object(),
new object(),
new object()
};
vs:
IList<object> objects = new List<object>();
objects.Add(new object());
objects.Add(new object());
objects.Add(new object());
答案 0 :(得分:3)
这两段代码之间没有运行时间差异。他们都会编译成同一个IL。
初始化程序语法的主要优点是它基本上初始化单个表达式中的列表,而不是跨多个语句。例如,您可以使用它从方法返回列表而不显式创建临时变量(编译器为您创建临时变量):
public List<T> MakeListOf3<T>( T val )
{
return new List<T> { val, val, val };
}
相反:
public List<T> MakeListOf3<T>( T val )
{
var list = new List<T>();
list.Add( val );
list.Add( val );
list.Add( val );
return list;
}
这是非常人为的,但你明白了。
答案 1 :(得分:2)
它基本上是一种语法糖,而且是个人品味和美学的问题。
此外,值得一提的是,可以组合集合初始化器和对象初始化器。你可以在一次运行中构建相当复杂的结构,例如:
Product product = new Product
{
Name = "Dog food",
Price = 9.95,
Manufacturer =
{
Name = "Dog food producer"
Location = "Some location"
},
SimilarProducts =
{
new Product { Name = "Cat food" },
new Product { Name = "Bird food", Price = 5.50},
new Product
{
Name = "Guinea Pig food",
Price = 5.50
SimilarProducts =
{
new Product { Name = "Guinea Pig shampoo" },
new Product { Name = "Guinea Pig toofpaste" }
},
},
},
}