小问题【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;
    }
  }

原文地址:https://www.cnblogs.com/wouldguan/p/2406594.html