【问题标题】:What are the keywords that are used in Constructor() : Keyword [closed]Constructor() 中使用的关键字是什么:关键字 [关闭]
【发布时间】:2018-01-26 22:38:27
【问题描述】:

我开始学习 C#,我看到我们在继承中这样做:

derivedClass(): base() 

然后我注意到在另一个例子中使用:

Constructor(): this(parameter) 

我不太明白

我的问题是这样使用的关键字

Constructor() : Keyword 

有名字吗?它们是什么,有什么用途?

谢谢!

【问题讨论】:

  • 它们被称为访问关键字
  • 我看到在继承中我们做了derivedClass(): base() 我们实际上并没有这样做,base() 在这种情况下是多余的,基类的默认构造函数将如果没有显式调用其他构造函数,则隐式调用。如果默认构造函数不可访问或不存在,您将收到编译时错误。

标签: c# constructor this base


【解决方案1】:

正如它所描述的here

base 关键字用于从派生类中访问基类的成员:1

  • 调用基类上已被另一个方法覆盖的方法。

  • 指定在创建派生类的实例时应调用哪个基类构造函数。

第二个子弹就是你要找的。 derivedClass有一个无参构造函数,调用基类的无参构造函数。

关于this,它指的是类的当前实例。所以调用这个Constructor() 会调用另一个应该在类中定义的构造函数,它需要一个参数。

【讨论】:

  • 天哪,他们确实在那个微软网站上隐藏了很多好东西。
【解决方案2】:

规范将这些称为 constructor-initializers,并将 thisbase 列为有效。来自规范:

10.11.1 构造函数初始化器

所有实例构造函数(除了类对象的构造函数)都隐式包含对另一个实例的调用 紧接在构造函数主体之前的实例构造函数。这 隐式调用的构造函数由 构造器初始化器:

• 的实例构造函数初始化器 表单 base(argument-listopt) 导致实例构造函数来自 要调用的直接基类。 ...

• 形式的实例构造函数初始化器 this(argument-listopt) 导致类的实例构造函数 本身被调用。 ...

【讨论】:

    猜你喜欢
    • 2022-12-05
    • 1970-01-01
    • 2012-06-18
    • 2015-05-16
    • 2010-09-06
    • 1970-01-01
    • 2011-07-12
    相关资源
    最近更新 更多