Main();newBaz(); // Baz.ctor base.ctor(); // Bar.ctor base.ctor(); // Foo.ctorQuux(); // Bar.Quux() beacuse there is an overloadConsole.WriteLine("Bar.Quux(), "+ name); // name doesn't have value name ="Bar"; name ="Baz";Quux(); // Bar.Quux(params object[] args) because Bar have a suitable methodConsole.WriteLine("Bar.Quux(params object[])"); ((Foo)this).Quux(); // Bar.Quux() beacuse there is an overloadConsole.WriteLine("Bar.Quux(), "+ name); // name == "Baz"