首页 > 程序开发 > 软件开发 > C# >

总体了解C#(23.构造器和析构器)

2006-09-21

23.构造器和析构器 你可以指定可选的构造器参数: class Test { public Test () : this (0, null) {} public Test (int x, object o) {} } 你也可以指定静态构造器: class Test {

23.构造器和析构器

你可以指定可选的构造器参数:

class Test

{

public Test () : this (0, null) {}

public Test (int x, object o) {}

}

你也可以指定静态构造器:

class Test

{

static int[] ascendingArray = new int [100];

static Test ()

{

for (int i = 0; i < ascendingArray.Length; i++)

ascendingArray [i] = i;

}

}

  析构器的命名采用C++的命名约定,使用~符号。析构器只能应用于引用类型,值类型不可以,并且不可被重载。析构器不可被显式调用,这是因为对象的生命期被垃圾收集器所管制。在对象所占用的内存被回收前,对象继承层次里的每一个析构器都会被调用。

  尽管和C++的命名相似,C#中的析构器更象Java中的finalize方法。这是因为它们都是被垃圾收集器调用而不是显式地被程序员调用。而且,就象Java的finalize,它们不能保证在各种情况下都肯定被调用(这常常使第一次发现这一点的每一个人都感到震惊)。如果你已习惯于采用确定性的析构编程模式(你知道什么时候对象的析构器被调用),当你转移到Java或C#时,你必须适应这个不同的编程模型。微软推荐的和实现的、贯穿于整个.NET框架的是dipose模式。你要为那些需要管理的外部资源(如图形句柄或数据库连接)的类定义一个dispose()方法。对于分布式编程,.NET框架提供一个约定的基本模型,以改进DCOM的引用计数问题。

相关文章
最新文章
热点推荐