C# 构造函数

2025 年 8 月 7 日 | 阅读 9 分钟

在 C# 编程语言中,构造函数是一个类特定的方法,在创建该类的对象时会自动调用。它包含在对象创建期间实现的指令集。构造函数的主要工作是初始化类的数据成员并准备好对象以供使用。

与 C# 中的常规方法相比,构造函数具有许多特性。其中一些如下:

  • 构造函数类名应与类名相同。
  • 它没有返回类型。
  • 当使用 new 关键字创建对象时,此函数会自动调用。
  • 它不能是抽象的或虚拟的。

构造函数语法

它具有以下语法:

调用构造函数

如果要调用构造函数,可以使用以下语法:

C# 构造函数示例

让我们举一个例子来说明 C# 中的构造函数。

示例

编译并运行

输出

Employee Name: Jhonson
Employee Age: 25
Employee Salary: 45000

说明

在此示例中,我们使用了构造函数 Employee(string name, int age, int salary),并在创建对象时使用 Name、Age 和 Salary 字段对其进行初始化。之后,emp1 对象被初始化为特定值,DisplayInfo() 方法打印员工的详细信息。

关于 C# 构造函数的要点

关于 C# 中的构造函数,有几点需要记住。其中一些如下:

  • 与类同名:构造函数必须与其定义的类名相同。
  • 自动调用:使用 new 关键字创建对象时,会自动调用它。
  • 允许重载:一个类可以有多个构造函数,每个构造函数包含一组不同的参数。
  • 允许使用访问修饰符:可以声明带有访问修饰符的构造函数,这些修饰符控制谁可以从此类构造对象。
  • 静态构造函数规则:一个类只能有一个静态构造函数,用于初始化静态成员。它在整个类中只运行一次。
  • 如果未定义构造函数:如果未显式定义构造函数,C# 编译器将创建一个默认的无参数构造函数。

构造方法类型

C# 中主要有 5 种类型的构造函数。它们如下:

C# Constructor

现在,我们将逐一讨论这些构造函数。

默认构造函数

C# 编程语言中,默认构造函数不需要任何参数。如果类没有声明任何其他构造函数,编译器会自动提供一个默认构造函数。它最常用于为对象设置默认值或固定值。

默认构造函数特性

默认构造函数具有许多特性。其中一些如下:

  • 它不需要任何参数。
  • 创建新对象时,会自动调用此函数。
  • 可以显式定义它。

C# 默认构造函数示例

让我们举一个例子来说明 C# 中的默认构造函数。

示例

编译并运行

输出

The name of the student is: Joseph

说明

在此示例中,当我们创建对象时,默认构造函数 Student() 会立即被调用,默认姓名为“Joseph”。它不需要参数,并有助于为类成员分配固定的起始值。

参数化构造函数

在 C# 编程语言中,参数化构造函数是一个构造函数,它在创建对象时至少需要一个参数来使用特定值对其进行初始化。它接受参数并将它们分配给类字段。

参数化构造函数特性

C# 中的参数化构造函数具有以下特性:

  • 它允许在初始化对象时具有更大的灵活性。
  • 构造函数重载允许创建多个参数化构造函数。

C# 参数化构造函数示例

让我们举一个例子来说明 C# 中的参数化构造函数。

示例

编译并运行

输出

The name of the student is: Joseph
The age of the student is: 26

说明

在此示例中,我们使用了 Student 类的构造函数,该构造函数接受姓名、年龄和字段,并在创建对象时用提供的这些值进行初始化。它允许使用用户定义的或运行时数据进行动态对象初始化。

复制构造函数

复制构造函数通过复制另一个对象的值来生成新对象。C# 没有内置的复制构造函数,例如 C++。如果我们想复制一个对象,我们可以手动创建一个复制构造函数。

复制构造函数特性

C# 中的复制构造函数具有以下特性:

  • 它将同一类的对象作为参数来复制其数据。
  • 当需要深拷贝时,它非常有用。

C# 复制构造函数示例

让我们举一个例子来说明 C# 中的复制构造函数。

示例

编译并运行

输出

The Original name of the Car is: TATA
The Copy name of the Car is: TATA

说明

在此示例中,我们演示了一个复制构造函数,它通过复制现有对象 (car1) 的值来创建一个新对象 (car2)。之后,Car 类包含一个参数化构造函数来初始化对象,以及一个复制构造函数来复制 name 字段。

静态构造函数

在 C# 中,静态构造函数主要用于初始化静态数据成员。在创建任何实例或访问静态成员之前,它只执行一次,这确保了静态字段得到有效初始化。

静态构造函数特性

C# 中的静态构造函数具有以下特性:

  • 不接受任何参数。
  • 不能显式调用它。
  • 不使用访问修饰符。

C# 静态构造函数示例

让我们举一个例子来说明 C# 中的静态构造函数。

示例

编译并运行

输出

Static constructor block executed
Connected to DB

说明

在此示例中,在创建任何对象或访问静态字段之前,会调用静态构造函数。此处初始化了静态连接属性,并在类首次加载时打印一条消息。

私有构造函数

在 C# 编程语言中,私有构造函数会阻止其他类创建该类的实例。它广泛用于 单例设计模式和实用类。

私有构造函数特性

C# 中的私有构造函数具有以下特性:

  • 它用于限制从外部创建对象。
  • 它适用于仅静态类或单例。

C# 私有构造函数示例

让我们举一个例子来说明 C# 中的私有构造函数。

示例

编译并运行

输出

Log: App started

说明

在此示例中,我们使用了私有构造函数,它阻止在类外部创建对象,这在单例等模式中很重要。虽然 Logger.Log() 方法可以正常工作,但直接实例化 (new Logger()) 会导致编译时错误。

构造方法重载

在 C# 编程语言中,构造函数重载允许类拥有多个具有不同参数列表的构造函数。它允许我们根据实例化时可用的信息以多种方式创建对象。

构造函数重载特性

C# 中的构造函数重载具有以下特性:

  • 每个构造函数都必须与类名相同。
  • 构造函数的参数数量和类型不同。
  • 根据提供的输入自动选择正确的构造函数。

C# 中的构造函数重载示例

让我们举一个例子来说明 C# 中的构造函数重载。

示例

编译并运行

输出

The Default constructor is called

The title of the book is: Python

The title of the book is: C# Programming
The name of the Author is: Jamie Chan

说明

在此示例中,我们使用了 Book 类,该类具有多个带有不同参数集的构造函数,这使得对象构造更加灵活。匹配的构造函数根据提供的输入运行,这表明重载如何提高了可用性。

C# 中构造函数的使用

C# 中的构造函数有多种用途。其中一些如下:

  • 创建对象时,会自动初始化。
  • 它使用默认值或自定义值分配类字段。
  • 它允许构造函数重载以获得更大的灵活性。
  • 静态构造函数主要用于设置静态成员。
  • 使用私有构造函数,我们可以限制对象创建。
  • 应支持单例等设计模式。
  • 清晰的初始化有助于提高代码的可读性和可维护性。

结论

总之,构造函数是 C# 中的特殊方法,用于在创建类实例时初始化对象。它们通过允许默认初始化、提供自定义值、复制数据、限制对象创建和初始化静态数据来提供多功能性。构造函数重载通过允许多种初始化途径来提高对象创建能力。总的来说,构造函数对于管理对象从创建之初的设置和行为至关重要。

C# 构造函数常见问题解答

1) C# 中的构造函数是什么?

在 C# 中,构造函数是一个类特定的方法,在创建对象时会自动调用。它从头开始设置对象。

2) 在 C# 中,一个类可以有多个构造函数吗?

是的,通过构造函数重载,一个类可以有多个具有不同参数列表的构造函数。

3) C# 中的默认构造函数和参数化构造函数有什么区别?

默认构造函数不接受任何参数。但是,参数化构造函数接受值来填充字段。

4) C# 中的构造函数可以声明为私有吗?

是的,私有构造函数主要用于单例模式,可防止在类外部创建对象。

5) 静态构造函数何时运行?

当类首次被访问时,会在创建任何对象之前自动调用静态构造函数。


下一个主题C# 析构函数