I am interested to know the difference between this
and base
object in C#. What is the best practice when using them?
this
represents the current class instance while base
the parent. Example of usage:
public class Parent { public virtual void Foo() { } } public class Child : Parent { // call constructor in the current type public Child() : this("abc") { } public Child(string id) { } public override void Foo() { // call parent method base.Foo(); } }
The two keywords are very different.
this
refers to the current instance (not the “current class”). It can only be used in non-static methods (because in a static method there is no current instance). Calling a method on this
will call the method in the same way as it would if you called it on a variable containing the same instance.
base
is a keyword that allows inherited method call, i.e. it calls the specified method from the base type. It too can only be used in a non-static method. It is usually used in a virtual method override, but actually can be used to call any method in the base type. It is very different from normal method invocation because it circumvents the normal virtual-method dispatch: it calls the base method directly even if it is virtual.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With