"new" means that you have two completely different methods regarding the CLR - they have the same name, but they are not related to inheritance. This means that if you run:
Base b = new Derived();
Derived d = new Derived();
b.MyMethod();
d.MyMethod();
This can lead to very difficult to understand code.
Usually, if you want to use different methods, call them different things. A common reason to use the same name (and signature) is to override the behavior of the base class method. At this point, you have no choice but to keep the name / signature the same.
source
share