C# - 对象初始化器语法
C# 3.0 (.NET 3.5) 引入了对象初始化器语法,这是一种初始化类或集合对象的新方法。对象初始化器允许您在创建对象时为字段或属性赋值,而无需调用构造函数。
示例:对象初始化器语法
public class Student
{
public int StudentID { get; set; }
public string StudentName { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
class Program
{
static void Main(string[] args)
{
Student std = new Student() { StudentID = 1,
StudentName = "Bill",
Age = 20,
Address = "New York"
};
}
}
在上面的示例中,Student 类在没有定义任何构造函数。在 Main() 方法中,我们创建了 Student 对象,并在大括号中同时为所有或部分属性赋值。这就是对象初始化器语法。
编译器将上述初始化器编译成如下所示的代码。
示例:编译时的对象初始化器语法
Student __student = new Student();
__student.StudentID = 1;
__student.StudentName = "Bill";
__student.Age = 20;
__student.StandardID = 10;
__student.Address = "Test";
Student std = __student;
集合初始化器语法
集合可以使用与类对象相同的方式,通过集合初始化器语法进行初始化。
示例:对象初始化器语法
var student1 = new Student() { StudentID = 1, StudentName = "John" };
var student2 = new Student() { StudentID = 2, StudentName = "Steve" };
var student3 = new Student() { StudentID = 3, StudentName = "Bill" } ;
var student4 = new Student() { StudentID = 3, StudentName = "Bill" };
var student5 = new Student() { StudentID = 5, StudentName = "Ron" };
IList<Student> studentList = new List<Student>() {
student1,
student2,
student3,
student4,
student5
};
您也可以同时初始化集合和对象。
示例:集合初始化器语法
IList<Student> studentList = new List<Student>() {
new Student() { StudentID = 1, StudentName = "John"} ,
new Student() { StudentID = 2, StudentName = "Steve"} ,
new Student() { StudentID = 3, StudentName = "Bill"} ,
new Student() { StudentID = 3, StudentName = "Bill"} ,
new Student() { StudentID = 4, StudentName = "Ram" } ,
new Student() { StudentID = 5, StudentName = "Ron" }
};
您也可以指定 null 作为元素
示例:集合初始化器语法
IList<Student> studentList = new List<Student>() {
new Student() { StudentID = 1, StudentName = "John"} ,
null
};
初始化器的优点
- 初始化器语法使代码更具可读性,并且易于向集合中添加元素。
- 在多线程中很有用。