位置:首页 > 软件操作教程 > 编程开发 > C# > 问题详情

C# 构造函数和析构函数

提问人:刘团圆发布时间:2020-12-07

在c#中定义类时,常常不需要定义相关的构造函数和析构函数,因为在编写代码时,如果没有提供它们,编译器会自动添加它们。但是,如有必要,可以提供自己的构造函数和析构函数,以便初始化对象和清理对象。使用下述语法可以把一个简单的构造函数添加到类中:

class MyClass

{

    public MyClass()

    {

        // Constructor code.

    }

}

这个构造函数与包含它的类同名,且没有参数(使其成为类的默认构造函数),这是一个公共函数,所以类的对象可以使用这个构造函数进行实例化。

也可以使用私有的默认构造函数,一般仅包含静态成员的类会使用。即不能用这个构造函数来创建这个类的对象实例:

class MyClass 

{

    private MyClass()

    {

        // Constructor code.

    }

}

最后,通过提供参数,也可以采用相同的方式给类添加非默认的构造函数,例如:

class MyClass 

{

    public MyClass(}

    {

        // Default constructor code.

    }

    public MyClass (int myInt)

    {

        // Nondefault constructor code (uses raylnt).

    }

}

可提供的构造函数的数量不受限制(当然不能耗尽内存,也不能有相同的参数集,所以“几乎不受限”更合适)。

使用略微不同的语法来声明析构函数。在.NET中使用的析构函数(由System.Object类提供鄉为Finalize(),但这不是我们用于声明析构函数的名称。使用下面的代码,而不是重写Finalize():

class MyClass 

{

    ^MyClass()

    {

        // Destructor body.

    }

}

类的析构函数由带有〜前缀的类名来声明(构造函数也使用类名声明)。当进行垃圾回收时,就执行析构函数中的代码,释放资源。调用这个析构函数后,还将隐式地调用基类的析构函数,包括System.Object根类中的Finalize()调用。该技术可以让.NETFramework确保调用Finalize(),因为重写FinalizeO则意味着需要显式地执行基类调用,这具有潜在危险。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部