C# 中的基本构造函数 - 首先调用哪个 [复制]

作者:编程家 分类: c++ 时间:2025-04-27

C# 中的基本构造函数 - 首先调用哪个?

在 C# 中,构造函数是一种特殊的方法,用于创建和初始化类的实例。当我们创建一个新的对象时,构造函数会被自动调用。但是,在一个类中可能会定义多个构造函数,这就引发了一个问题:在调用构造函数时,哪个构造函数会首先被调用呢?

在 C# 中,当我们创建一个对象时,首先调用的是该类的默认构造函数。默认构造函数是一个无参构造函数,如果我们没有自定义构造函数,编译器会自动提供一个默认构造函数。

然而,如果我们在类中定义了自己的构造函数,那么默认构造函数将不再被提供。在这种情况下,我们需要使用自定义的构造函数来创建对象。当使用自定义构造函数创建对象时,自定义构造函数会被首先调用。

案例代码:

让我们通过一个简单的例子来说明构造函数的调用顺序。假设我们有一个名为"Person"的类,用于表示一个人的信息,包括姓名和年龄。我们可以定义两个构造函数,一个是无参构造函数,另一个是带有参数的构造函数。

class Person

{

public string Name;

public int Age;

public Person()

{

Name = "Unknown";

Age = 0;

Console.WriteLine("Default constructor called.");

}

public Person(string name, int age)

{

Name = name;

Age = age;

Console.WriteLine("Parameterized constructor called.");

}

}

class Program

{

static void Main(string[] args)

{

Person person1 = new Person();

Console.WriteLine("Name: " + person1.Name);

Console.WriteLine("Age: " + person1.Age);

Console.WriteLine();

Person person2 = new Person("John", 25);

Console.WriteLine("Name: " + person2.Name);

Console.WriteLine("Age: " + person2.Age);

}

}

在上面的代码中,我们定义了一个名为"Person"的类,并在其中定义了两个构造函数。第一个构造函数是无参构造函数,用于初始化姓名和年龄为默认值。第二个构造函数是带有参数的构造函数,用于根据传入的参数初始化姓名和年龄。

在主函数中,我们首先使用无参构造函数创建了一个名为"person1"的对象,并输出了其姓名和年龄。然后,我们使用带有参数的构造函数创建了一个名为"person2"的对象,并输出了其姓名和年龄。

当我们运行以上代码时,输出结果如下:

Default constructor called.

Name: Unknown

Age: 0

Parameterized constructor called.

Name: John

Age: 25

从输出结果可以看出,当我们使用无参构造函数创建对象时,首先调用的是无参构造函数;而当我们使用带有参数的构造函数创建对象时,首先调用的是带有参数的构造函数。

在 C# 中,构造函数的调用顺序取决于我们创建对象时使用的构造函数。如果我们定义了自己的构造函数,那么默认构造函数将不再被提供,而是需要使用自定义的构造函数来创建对象。因此,在创建对象时,首先调用的是我们使用的构造函数。