c# - The use of base in inheritance context -


could please explain me why result here is: dvd unknown dvd:dvd

using system;  class program {     class m     {         internal string n;          internal m() { }         internal m(string n)         {             console.write(n + " ");             n = n;         }     }      class d : m     {         internal d(string n) : base(n) { n = "dvd:" + n; }     }      static void main(string[] args)     {         m d1 = new d("dvd");          m m1 = new m("unknown");          console.writeline(" " + d1.n);      } } 

i understand parts of code, except line:

internal d(string n) : base(n) { n = "dvd:" + n; } 

i know base calls parent class, in case don't it. :/

let's break apart line:

internal d(string n) : base(n) {     n = "dvd:" + n; } 

the part you're needing clarification on base(n). base(n) call m(string n) constructor. happens before body of constructor (n = "dvd...) run.

i think code clearer if modify printed slightly:

class m {     internal string n;      internal m() { }     internal m(string n)     {         console.writeline("in base " + n);         n = n;     } }  class d : m {     internal d(string n) : base(n) { n = "dvd:" + n; } }  static void main(string[] args) {     m d1 = new d("dvd");      m m1 = new m("unknown");      console.writeline("d1.n " + d1.n); } 

outputs

in base dvd in base unknown d1.n dvd:dvd 

the same thing happening in output of dvd unknown dvd:dvd, on 1 line: first, d's constructor calls m's constructor, writes dvd (this happens before dvd: added it). then, m's constructor called directly, writes unknown. then, write d1's n, dvd:dvd.


Comments

Popular posts from this blog

how to proxy from https to http with lighttpd -

android - Automated my builds -

python - Flask migration error -