加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关于C#中构造函数的几个问题

发布时间:2020-12-15 08:10:27 所属栏目:百科 来源:网络整理
导读:在C#中关于构造函数的继承: 我已经读过构造函数不能被继承. 如果基类包含一个或多个构造函数,派生类必须始终调用其中一个?派生类不可能跳过基类的构造函数吗? 派生类可以有自己的构造函数,但必须调用其中一个基类构造函数. 这些陈述是否更正? 解决方法
在C#中关于构造函数的继承:

>我已经读过构造函数不能被继承.
>如果基类包含一个或多个构造函数,派生类必须始终调用其中一个?派生类不可能跳过基类的构造函数吗?
>派生类可以有自己的构造函数,但必须调用其中一个基类构造函数.

这些陈述是否更正?

解决方法

>是的,你是对的,构造函数不是继承的.因此,只是因为Object具有无参数构造函数,这并不意味着String具有无参数构造函数.从C#4规范的1.6.7.1节:

Unlike other members,instance constructors are not inherited,and a class has no instance constructors other than those actually declared in the class. If no instance constructor is supplied for a class,then an empty one with no parameters is automatically provided.

>是的,派生类构造函数的构造函数链将始终通过其基类构造函数…虽然它可能是间接的,因为它可以通过此(…)而不是base链接到同一类中的另一个构造函数( …).如果你没有指定this(…)或base(…),那就相当于base() – 在基类中调用无参数构造函数.

有关更多信息,请参阅我的article on constructor chaining.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读