C# 构造函数

构造函数

构造函数 (Constructors) 是一种特殊的方法,用于初始化对象。构造函数的优势在于,当创建类的一个对象时,它会被调用。它可以用于为字段设置初始值:

实例

创建一个构造函数:

// 创建一个 Car 类  
class Car
{
  public string model;  // 创建一个字段
  
  // 为 Car 类创建一个类构造函数
  public Car()
  {
    model = "Mustang"; // 为 model 设置初始值
  }
  
  static void Main(string[] args)
  {
    Car Ford = new Car();  // 创建一个 Car 类的对象(这将调用构造函数)
    Console.WriteLine(Ford.model);  // 打印 model 的值
  }
}  
  
// 输出 "Mustang"

亲自试一试

提示

请注意,构造函数的名称必须与类名匹配,并且它不能具有返回类型(如 voidint)。

还要注意,当对象被创建时,构造函数会被调用。

默认地,所有类都有构造函数:如果你不自己创建类构造函数,C# 会为你创建一个。但是,那么你将无法为字段设置初始值。

构造函数节省时间!请查看此页面上的最后一个实例,以真正理解为什么。

构造函数参数 ( Constructor Parameters )

构造函数也可以接受参数,这些参数用于初始化字段。

以下实例向构造函数添加了一个字符串 modelName 参数。在构造函数内部,我们将 model 设置为 modelName (model=modelName)。当我们调用构造函数时,我们向构造函数传递一个参数 ("Mustang"),这将把 model 的值设置为 "Mustang"

实例

class Car  
{  
  public string model;  
  
  // 创建一个带有参数的类构造函数  
  public Car(string modelName)  
  {  
    model = modelName;  
  }  
  
  static void Main(string[] args)  
  {  
    Car Ford = new Car("Mustang");  
    Console.WriteLine(Ford.model);  
  }  
}  
  
// 输出 "Mustang"

亲自试一试

您可以拥有任意数量的参数:

实例

class Car  
{  
  public string model;  
  public string color;  
  public int year;  
  
  // 创建一个带有多个参数的类构造函数  
  public Car(string modelName, string modelColor, int modelYear)  
  {  
    model = modelName;  
    color = modelColor;  
    year = modelYear;  
  }  
  
  static void Main(string[] args)  
  {  
    Car Ford = new Car("Mustang", "Red", 1969);  
    Console.WriteLine(Ford.color + " " + Ford.year + " " + Ford.model);  
  }  
}  
  
// 输出 Red 1969 Mustang

亲自试一试

提示:与其他方法一样,构造函数可以通过使用不同数量的参数进行重载

构造函数节省时间

当你考虑前一章中的例子时,你会注意到构造函数非常有用,因为它们有助于减少代码量:

没有构造函数:

prog.cs

class Program
{
  static void Main(string[] args)
  {
    Car Ford = new Car();
    Ford.model = "Mustang";
    Ford.color = "red";
    Ford.year = 1969;

    Car Opel = new Car();
    Opel.model = "Astra";
    Opel.color = "white";
    Opel.year = 2005;

    Console.WriteLine(Ford.model);
    Console.WriteLine(Opel.model);
  }
}

输出:

Mustang
Astra

有构造函数:

prog.cs

class Program
{
  static void Main(string[] args)
  {
    Car Ford = new Car("Mustang", "Red", 1969);
    Car Opel = new Car("Astra", "White", 2005);

    Console.WriteLine(Ford.model);
    Console.WriteLine(Opel.model);
  }
}

输出:

Mustang
Astra