Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# inheritance and the "this" keyword

I am working on some code that was previously written by another developer, and I came across the block of code below:

/// <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}

From what I understand, is that the overloaded constructor would also call the default constructor with the Revision that I send in, causing the initialized ArrayLists to be accessible from the overloaded constructor. Is this correct, or am I totally confused?

like image 833
ploosh Avatar asked Nov 18 '10 20:11

ploosh


People also ask

Huruf c melambangkan apa?

Logo C merupakan sebuah lambang yang merujuk pada Copyright, yang berarti hak cipta.

C dalam Latin berapa?

C adalah huruf ketiga dalam alfabet Latin. Dalam bahasa Indonesia, huruf ini disebut ce (dibaca [tʃe]).

Bahasa C digunakan untuk apa?

Meskipun C dibuat untuk memprogram sistem dan jaringan komputer namun bahasa ini juga sering digunakan dalam mengembangkan software aplikasi. C juga banyak dipakai oleh berbagai jenis platform sistem operasi dan arsitektur komputer, bahkan terdapat beberepa compiler yang sangat populer telah tersedia.

Bahasa C dibuat pertama kali oleh siapa dan tahun berapa?

Bahasa pemrograman C ini dikembangkan antara tahun 1969 – 1972 oleh Dennis Ritchie. Yang kemudian dipakai untuk menulis ulang sistem operasi UNIX. Selain untuk mengembangkan UNIX, bahasa C juga dirilis sebagai bahasa pemrograman umum.


2 Answers

Yes, that is correct. However, to correct your terminology:

  • There is no "default constructor" except possibly the parameterless constructor, which doesn't appear to exist on this class.
  • This has nothing whatsoever to do with inheritance. This technique is actually called constructor chaining.
like image 165
cdhowie Avatar answered Sep 22 '22 06:09

cdhowie


This is correct and the technique is called constructor chaining. In this scenario the this call can be loosely visualized as saying

Run the specified constructor before the current constructor

They both run against the same object instance so changes in the called on are visible in the original.

like image 34
JaredPar Avatar answered Sep 24 '22 06:09

JaredPar