📜  C#3.0 对象和集合初始化器(objectcollection initializer)(1)

📅  最后修改于: 2023-12-03 15:14:27.330000             🧑  作者: Mango

C# 3.0 对象和集合初始化器(object collection initializer)

在 C# 3.0 中,对象和集合初始化器被引入到语言中,用于方便地初始化对象以及集合类型。这样的语法糖非常常用,尤其在日常开发中时常需要使用。

对象初始化器

C# 中,如果我们需要初始化一个对象,我们需要手动为对象的每一个属性进行赋值操作。例如,我们有一个 Person 类:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

通常我们这样初始化对象:

Person p = new Person();
p.Name = "张三";
p.Age = 18;

但是有了对象初始化器,我们可以直接在对象创建的时候赋值,这样代码看起来更加清晰简洁:

Person p = new Person
{
    Name = "张三",
    Age = 18
};

通过对象初始化器语法,我们可以在创建对象的同时,以简短明了的方式为其属性进行初始化。

集合初始化器

C# 中,集合类型(例如 List、Dictionary)的初始化也是比较繁琐的,我们常常需要为其一个一个添加元素,这样可能会显得冗长且效率不高。对象初始化器的语法,同样可以用于集合类型的初始化。

以 List 为例子,通常我们创建一个 List 对象,并为其添加元素会写成这样:

List<int> numbers = new List<int>();
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);

但我们可以采用集合初始化器语法,由此更加清晰简洁:

List<int> numbers = new List<int> { 1, 2, 3 };

我们以 Dictionary 为例进行对比,通常我们初始化一个 Dictionary 对象的时候,我们需要为其一个一个赋值,这样会显得比较冗长:

Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("one", 1);
dict.Add("two", 2);
dict.Add("three", 3);

采用集合初始化器语法,可以更加简洁明了,代码如下:

Dictionary<string, int> dict = new Dictionary<string, int>
{
    { "one", 1 },
    { "two", 2 },
    { "three", 3 }
};

集体初始化器语法的这种方式,同样适用于其他集合类,例如 HashSet、Stack、Queue,我们可以直接为其添加元素,如下所示:

HashSet<int> set = new HashSet<int> { 1, 2, 3 };
Stack<string> stack = new Stack<string> { "one", "two", "three" };
Queue<double> queue = new Queue<double> { 1.0, 2.0, 3.0 };

总之,C# 3.0 中的对象和集合初始化器是一种非常便捷的语法糖,它们极大地简化了初始化的代码,方便了日常开发工作。