【C#探讨】1:构造函数
想出一个点子:做个专栏,专门探讨学习中遇到的问题,比较经典的问题,何谓经典?就是人人都可以参与,各抒己见,但是又值得深究的问题。以便增加论坛的互动性。觉得话题好的兄弟,可以把帖子通知版主,由版主置顶,可以吸引人气,也不会沉底,但是请不要把题目往这一甩,就让别人帮你忙活去,起码也要有自己的见解先帖出来,这样,版主看到,才回给你置顶,话题最好也不要太偏,那样可加入的人就少。为了论坛的美观,置顶帖子不超过3个话题。这里我就带个头,弄第一个话题:类的构造函数的探究,权做抛砖引玉。任何类都是从构造函数开始,咱们的探讨专栏,也就从此开始了。
前些时看到有个兄弟出了几个题目,有这么个问题,能否在类中显式调用构造函数,我也一下子拿不准,偶然看C#高级编程里面有这么一段,吸引了我的注意。在类里可以通过base(),this()调用基类和本身的构造函数。
程序代码:
class AAA { public AAA() { } } class BBB:AAA { public BBB() :base() //此为BBB基类AAA的构造函数 { } }
可能有兄弟会问,不这样也可以啊,平时没这样。是的,不写那句也可以,但是前提是基类的构造函数是无参的,当有参数时,就必须这么写了,得通过base(参数)往基类的构造函数里头传参数,否则就会报错,大家都知道构造函数执行顺序是从上到下的。
在此,我有个疑问,base()是调用基类的构造函数,this()是调用自己的构造函数,这或许算是显式调用构造函数吧,但是我以为this指的一般都是当前对象,但是构造函数是以类名命名的,类来构造对象的方法,叫做构造函数,岂可以用this()来指代构造函数呢?那不成了对象生成对象了。但是在编译器中写this()又确实是识别的,还有提示是当前类的构造函数,请兄弟们积极讨论下,看到底该怎么来理解。
[[it] 本帖最后由 小仙 于 2008-10-8 19:46 编辑 [/it]]