您的位置:首页 > 编程语言 > C#

C# 构造器(构造器链),终结器,对象初始化器

2011-10-05 17:01 176 查看
一、构造器

1、注意事项

@1、构造器是用来创建对象实例的方法,该方法没有返回类型,访问级别必须为public,方法名必须完全和类名相同。

@2、C#编译器会在编译时自动添加一个默认构造器(不获取参数,什么也不做)。然而,一旦为一个类显式添加了一个构造器,c#编译器就不会再自动提供默认构造器了。

@3、可以显式的定义一个默认构造器,这也许是一种能讲某些字段初始化成特定值的构造器。定义默认构造器只需要声明一个不获取任何参数的构造器。

@4、当一个字段同时在声明时和构造器内部进行了不同的赋值时,字段的最终的值是在构造器内部所赋的值。因为只有字段在声明时被赋值发生后,构造器内部的赋值才会发生。所以,应该避免在同一个类中,既在声明时赋值,又在构造器中赋值。

2、在构造器重载时,使用构造器链避免输入重复代码



上述代码中对Employee对象进行初始化的代码在好几个地方都重复了,所以必须在多个地方进行维护。

为了避免输入重复代码,可以使用this在一个构造器中调用另一个构造器(称为构造器链),它是用构造器初始化器实现的。构造器初始化器会在执行当前构造器的实现之前,判断要调用另外那个构造器。

修改后代码如下:





运行结果:



二、终结器

终结器定义了对象在销毁过程中发生的事情。与c++的析构器不同,终结器不是在对一个对象的所有引用都消失之后就马上运行。相反,终结器是在一个对象最后一次活动以后,并在程序终止之前执行。具体的说,垃圾回收器会在一次垃圾回收过程中识别出带有终结器的对象。之后,它并不是立即回收这些对象,而是将它们添加到一个终结队列中。一个独立的线程遍历终结队列中的每一个对象,调用他们的终结器,然后把它们从队列中删除,使他们再次可供垃圾回收器使用。

三、对象初始化器

在c#3.0中引入的新特性。它能初始化一个对象中的所有允许访问的字段和属性。具体地说,在创建对象的构造器调用后,你可以增加一对大括号,并在其中添加一个成员初始化列表。每个成员的初始化操作都是一个赋值操作,等号左边是一个允许访问的字段属性,右边则是具体要赋的值。

例如:Employee e=new Employee(“su“,”zhen“) {Id=222,Salary=”not enough“};

事实上,这只是一项语法上的改进,最终生成CIL代码和用单独的语句对字段和属性进行赋值无异。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: