在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则意味着需要显式地执行基类调用,这具有潜在危险。
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>