类的执⾏顺序?

在C#中,类的执行顺序取决于你如何组织和调用代码。以下是类中代码执行的一般顺序:

  1. 静态构造函数

    • 如果类包含静态构造函数,它将在类首次被引用时执行,且仅执行一次。

    • 静态构造函数常用于初始化静态成员。

  2. 实例构造函数

    • 当创建类的实例时,实例构造函数将被调用。

    • 如果类继承自另一个类,将首先调用基类的构造函数(除非显式地调用 base())。

  3. 字段初始化

    • 类字段的初始化(包括自动属性的隐式字段)在构造函数执行之前进行。

  4. 构造函数体

    • 在字段初始化之后,构造函数体中的代码将被执行。

  5. 方法调用

    • 在对象创建后,可以调用其实例方法。

    • 如果方法中包含对其他方法的调用,将按照调用顺序执行。

  6. 属性访问

    • 属性的getter和setter在访问属性值或赋值时执行。

  7. 索引器

    • 索引器在通过索引访问元素时执行。

  8. 析构函数

    • 当对象不再被引用,且垃圾回收器回收对象时,析构函数将被调用。

    • 析构函数也称为终结器(Finalizer),它在对象被垃圾回收之前执行。

  9. 静态析构函数

    • 类的静态成员在应用程序域卸载时被清理,如果类包含静态析构函数,它将在静态成员被清理前执行。

在实际应用程序中,代码的执行顺序通常由程序的入口点(如 Main 方法)决定,然后按照方法调用和对象创建的顺序进行。例如:

class MyClass
{
    static MyClass()
    {
        // 静态构造函数,类首次被引用时执行
    }
​
    MyClass()
    {
        // 实例构造函数,创建对象时执行
    }
​
    ~MyClass()
    {
        // 析构函数,对象被垃圾回收时执行
    }
​
    void MyMethod()
    {
        // 实例方法,调用时执行
    }
​
    public int MyProperty { get; set; } // 属性访问
​
    public int this[int index] { get; set; } // 索引器访问
}
​
class Program
{
    static void Main(string[] args)
    {
        MyClass myObject = new MyClass(); // 构造函数
        myObject.MyMethod(); // 方法调用
        var value = myObject.MyProperty; // 属性访问
        var indexedValue = myObject[0]; // 索引器访问
    }
}

在这个例子中,MyClass 的静态构造函数首先被执行,然后是实例构造函数,接着是方法调用、属性访问和索引器访问。最后,当 myObject 不再被引用时,它的析构函数将被执行。如果 MyClass 包含静态成员,那么静态析构函数将在应用程序域卸载时执行。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值