初始化器
1.对象初始化器
为了简化新建对象的过程,C#提供了对象初始化语法,语法是使用一个大括号,大括号内是使用逗号分隔的一个列表,列表中的每个成员映射到正在被初始化的对象的公共字段或属性。
下面的代码在Main方法中使用对象初始化语法声明了一个Student对象。
1 class Student 2 { 3 public string FirstName{ get;set; } 4 public string LastName{ get;set; }
5 public Student(){}
6 public Student(string firstName, string lastName) 7 { 8 this.FirstName = firstName; 9 this.LastName = lastName; 10 } 11 } 12 13 static void Main(string[] args) 14 { 15 var student1 = new Student{FirstName = "Wang", LastName = "MeiMei"}; 16 }
上面的代码在后台隐式调用了Student类的默认构造函数,然后再给指定的属性赋值。
我们也可以在构建类型时,显式调用它的默认构造函数:
var student2 = new Student(){FirstName = "Li", LastName = "Lei"};
也可以调用类的任意的构造函数,假如在Student类中有一个用于设置Student的ID的构造函数:
1 class Student 2 { 3 public int ID{ get;set; } 4 5 public Student(int id) 6 { 7 this.ID = id; 8 } 9 }
我们可以这样使用对象初始化语法:
var student3 = new Student(10001){FirstName = "Mr", LastName = "X"};
2.集合初始化器
只能对支持Add()方法的类使用集合初始化语法。
1 //初始化整数的泛型list<> 2 List<int> myGenericList = new List<int>{ 0, 1, 2, 3, 4, 5 };
如果容器操作的是类或结构的集合,我们可以将对象初始化语法与集合初始化语法结合使用:
var students = new List<Student>{ new Student{FirstName = "Li", LastName = "Lei"}, new Student{FirstName = "Wang", LastName = “Meimei"} };
var studentDic = new Dictionary<int, Student> { {100, new Student("Wang", "Meimei"){ID = 100}}, {101, new Student("Li", "Lei") {ID = 101}} };