大括号{ } 的使用称为集合初始化器。对于实现IEnumerable 的类型,Add 方法将代表您正常调用:
List<string> myList2 = new List<string>() { "one", "two", "three" };
允许使用空集合初始化器:
List<string> myList2 = new List<string>() { };
并且,在实现初始化程序时,您可以省略默认构造函数的括号 ():
List<string> myList2 = new List<string> { };
你可以对类属性做类似的事情,但它被称为对象初始化器。
var person = new Person
{
Name = "Alice",
Age = 25
};
并且可以将这些结合起来:
var people = new List<Person>
{
new Person
{
Name = "Alice",
Age = 25
},
new Person
{
Name = "Bob"
}
};
C# 3.0 中引入的这个语言特性还支持初始化anonymous types,这在 LINQ 查询表达式中特别有用:
var person = new { Name = "Alice" };
它们也适用于数组,但您可以进一步省略从第一个元素推断的类型:
var myArray = new [] { "one", "two", "three" };
初始化多维数组是这样的:
var myArray = new string [,] { { "a1", "b1" }, { "a2", "b2" }, ... };
更新
从 C# 6.0 开始,您还可以使用 索引初始化器。这是一个例子:
var myDictionary = new Dictionary<string, int>
{
["one"] = 1,
["two"] = 2,
["three"] = 3
};