C# 构造函数
构造函数
构造函数是用于初始化对象的**特殊方法**。构造函数的优势在于它在创建类的对象时被调用。它可以用于设置字段的初始值
示例
创建构造函数
// Create a Car class
class Car
{
public string model; // Create a field
// Create a class constructor for the Car class
public Car()
{
model = "Mustang"; // Set the initial value for model
}
static void Main(string[] args)
{
Car Ford = new Car(); // Create an object of the Car Class (this will call the constructor)
Console.WriteLine(Ford.model); // Print the value of model
}
}
// Outputs "Mustang"
请注意,构造函数的名称必须与类名**匹配**,并且它不能具有**返回值类型**(如 void
或 int
)。
另请注意,构造函数在创建对象时被调用。
所有类默认情况下都有构造函数:如果您自己没有创建类构造函数,C# 会为您创建一个。但是,这样您就无法设置字段的初始值。
**构造函数节省时间!**查看本页面的最后一个示例,真正了解原因。
构造函数参数
构造函数也可以接受参数,用于初始化字段。
以下示例向构造函数添加了 string modelName
参数。在构造函数内部,我们将 model
设置为 modelName
(model=modelName
)。当我们调用构造函数时,我们将参数传递给构造函数 ("Mustang"
),这将设置 model
的值为 "Mustang"
示例
class Car
{
public string model;
// Create a class constructor with a parameter
public Car(string modelName)
{
model = modelName;
}
static void Main(string[] args)
{
Car Ford = new Car("Mustang");
Console.WriteLine(Ford.model);
}
}
// Outputs "Mustang"
您可以根据需要设置任意数量的参数
示例
class Car
{
public string model;
public string color;
public int year;
// Create a class constructor with multiple parameters
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);
}
}
// Outputs 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);
}
}
使用构造函数
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);
}
}