📜  C# 中的构造函数(1)

📅  最后修改于: 2023-12-03 14:59:41.359000             🧑  作者: Mango

C# 中的构造函数

在 C# 中,构造函数是一种特殊的方法,用于初始化类的对象。每当创建一个类的新实例时,都会自动调用该类的构造函数。

构造函数的名称必须与类名相同,并且没有返回类型(甚至没有 void)。在构造函数内部,可以设置类的属性、字段和方法,以确保对象被正确初始化。

默认构造函数

如果没有为类定义构造函数,则会自动创建一个默认构造函数。默认构造函数不接受任何参数,并执行空操作。

以下是一个简单的示例,说明默认构造函数在类的实例化过程中的作用:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        Person person = new Person();
        person.Name = "John";
        person.Age = 30;
    }
}

在上面的示例中,创建了一个 Person 类型的新实例。由于没有为该类定义任何构造函数,因此将使用默认构造函数。通过访问该对象的属性,将其名称和年龄设置为 John 和 30。

自定义构造函数

在大多数情况下,您可能需要为类定义自定义构造函数,以便在对象实例化时执行自定义逻辑。例如,如果您正在实现一个表示“矩形”的类,则可以编写一个构造函数,该构造函数将长度和宽度作为参数,并计算矩形的面积。

以下是一个示例,说明如何为类定义自定义构造函数:

public class Rectangle
{
    public int Length { get; set; }
    public int Width { get; set; }
    public int Area { get; private set; }

    public Rectangle(int length, int width)
    {
        Length = length;
        Width = width;
        Area = length * width;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Rectangle rectangle = new Rectangle(10, 20);
        Console.WriteLine("Length: {0}", rectangle.Length);
        Console.WriteLine("Width: {0}", rectangle.Width);
        Console.WriteLine("Area: {0}", rectangle.Area);
    }
}

在上面的示例中,为 Rectangle 类定义一个构造函数,该构造函数将其长度和宽度作为参数。构造函数使用这些参数初始化类的属性,并计算并存储矩形的面积。

静态构造函数

除了常规构造函数之外,C# 还允许定义静态构造函数。静态构造函数只在类被加载并且第一次使用时调用一次,不接受任何参数,并且不能使用访问修饰符或参数。

以下是一个示例,说明如何为类定义静态构造函数:

public class MyClass
{
    public static int Counter { get; private set; }

    static MyClass()
    {
        Counter = 0;
    }

    public MyClass()
    {
        Counter++;
    }
}

class Program
{
    static void Main(string[] args)
    {
        for (int i = 0; i < 10; i++)
        {
            MyClass myClass = new MyClass();
        }

        Console.WriteLine("Counter: {0}", MyClass.Counter);
    }
}

在上面的示例中,为 MyClass 类定义了一个静态构造函数。该构造函数仅在类被加载时调用一次,并将 Counter 属性初始化为 0。

接下来,也为 MyClass 定义了一个常规构造函数,该构造函数在每次创建对象实例时将 Counter 属性递增 1。

在程序中创建了 10 个 MyClass 对象实例,每次创建都会导致 Counter 属性递增 1。最后输出 Counter 的值为 10。

总结

C# 中的构造函数是一种特殊的方法,用于初始化类的对象。默认构造函数会自动创建,不需要手动定义。自定义构造函数可以接受参数,并执行特定逻辑,以确保对象被正确初始化。静态构造函数用于执行只需要发生一次的初始化操作。在正确使用构造函数的情况下,可以使代码更加可读且易于维护。