C#继承和“this”关键字

时间:2010-11-18 20:41:07

标签: c# inheritance overloading

我正在处理以前由其他开发人员编写的一些代码,我遇到了下面的代码块:

/// <summary>
/// Default Constructor.
/// </summary>
public Body(Revision parent)
{
  mContainer = parent;
  mSections = new ArrayList();
  mSummary = new ArrayList();
}

/// <summary>
/// Constructs a Body from specified ParseElement.
/// </summary>
/// <param name="parent">Revision container.</param>
/// <param name="elem">Source ParseElement.</param>
public Body(Revision parent, ParseElement elem) : this(parent)
{more constructing stuff}

据我所知,重载的构造函数也会使用我发送的Revision调用默认构造函数,导致可以从重载的构造函数访问初始化的ArrayLists。这是正确的,还是我完全糊涂了?

2 个答案:

答案 0 :(得分:12)

是的,这是正确的。但是,要纠正您的术语:

  • 除了可能的无参数构造函数之外,没有“默认构造函数”,这个构造函数似乎不存在于该类中。
  • 这与继承没有任何关系。这种技术实际上称为构造函数链接。

答案 1 :(得分:3)

这是正确的,该技术称为构造函数链接。在这种情况下,this调用可以松散地显示为

  

在当前构造函数

之前运行指定的构造函数

它们都针对同一个对象实例运行,因此在原始对象中可以看到被调用的更改。