小问题【4】
构造器:
假如一个类没有显式定义任何构造器,C#编译器会自动添加一个没有参数的构造器(默认构造器)。一旦为一个类显式添加了一个构造器,C#编译器就不再自动提供默认构造器。
C# 3.0 增加了对象初始化器,增加了一个成员初始化列表,等号左边是一个允许访问的字段属性,右边是具体要赋的值。
示例代码:
class Program { static void Main() { Employee e = new Employee() //这里没分号 { FirstName = "First", //初始化列表 LastName = "Last" }; Console.Write(e.FirstName + "--" + e.LastName); Console.ReadKey(); } } class Employee { public string FirstName; public string LastName; }
集合初始化器:
使用集合初始化器可以在集合实例化期间为集合内部的项赋值,借鉴数组的语法。
代码:
class Program { static void Main() { List<Employee> emp = new List<Employee>() { new Employee("F1", "L1"), // new Employee("F2", "L2") }; } } class Employee { public string FirstName; public string LastName; public Employee(string firstName, string lastName) { FirstName = firstName; LastName = lastName; } }
class Employee { public string FirstName; public string LastName; public Employee() {} //构造器1 public Employee(string firstName, string lastName) //构造器2 { FirstName = firstName; LastName = lastName; } }
使用this可以调用另一个构造器, this后添加与被调用构造器对应的一个参数列表。
构造器初始化器会在执行当前构造器的实现之前,判断要调用另外哪一个构造器
class Employee { public string FirstName; public string LastName; public Employee():this("F", "L") {} //这里调用了下面的构造器 public Employee(string firstName, string lastName) // { FirstName = firstName; LastName = lastName; } }