📜  C#|静态构造函数和非静态构造函数的区别(1)

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

C# | 静态构造函数和非静态构造函数的区别

在 C# 中,构造函数是一种特殊的方法,它用于初始化对象。在对象被创建时,构造函数自动执行。C# 中有两种类型的构造函数,分别是静态构造函数和非静态构造函数。它们有一些不同的特性和使用方法,本文将介绍它们的区别。

静态构造函数

静态构造函数是用于初始化类的静态成员的一种方法。它只能被调用一次,即在第一次访问类的所有静态成员之前。静态构造函数不能有任何参数,也不能有访问修饰符。

下面是一个静态构造函数的例子:

public class MyClass
{
    static MyClass()
    {
        // 静态构造函数代码...
    }
}

注意,在使用类中的静态成员之前,静态构造函数会自动调用。静态构造函数不需要由程序员显式地调用。它们也不能被继承,或者被派生类重写。

静态构造函数通常用于执行一些初始化操作,例如初始化静态变量或向日志中写入信息等。

非静态构造函数

非静态构造函数用于初始化对象的实例成员。它只能通过 new 操作符来调用。非静态构造函数可以有零个或多个参数,并且可以有访问修饰符。

下面是一个非静态构造函数的例子:

public class MyClass
{
    public MyClass()
    {
        // 非静态构造函数代码...
    }
}

注意,每当使用 new 操作符创建新对象时,都会调用该对象的非静态构造函数。也就是说,非静态构造函数在每次创建对象时执行。

非静态构造函数通常用于初始化实例变量或执行其他与对象相关的初始化操作。

区别总结

以下是静态构造函数和非静态构造函数的区别总结:

| | 静态构造函数 | 非静态构造函数 | | --------------- | --------------------------------------------- | ---------------------------------------------------------- | | 调用方式 | 自动调用,只在自身类的静态成员被使用时调用。 | 通过 new 操作符显式调用,每次使用 new 操作符时都会调用。 | | 参数 | 无 | 可以有零个或多个。 | | 修饰符 | 不能有 | 可以有访问修饰符。 | | 可重载 | 不能 | 可以。 | | 被继承和重写 | 不能 | 不能。 | | 功能 | 初始化类的静态成员 | 初始化对象的实例成员 | | 执行次数 | 只会执行一次 | 每次使用 new 操作符时都会执行 |

总结

静态构造函数和非静态构造函数都是用于初始化对象的方法,但它们的使用方式和特性有所不同。静态构造函数只会在类的静态成员被使用时调用,而非静态构造函数在每次创建对象时都会调用。

在实际应用中,我们需要根据具体情况来选择使用哪种构造函数,以便实现正确的初始化操作。