What do you mean by shadowing in .NET?Assume that
you have a class that derives from the base class and redefines a method
in the base class. Then what process is happening? You will generally
assume it as overriding meaning that derived class method overrides base
class method and redefines the method.
Even when it redefines, the derived class method should have the same signature as base class method and the derived class method should include the keyword override in its method signature. What if you don’t explicitly specify the override keyword in your derived class method? Even then does it mean as overriding. No, if you don’t explicitly use override then the derived class method is shadowing base class method. This means that derived class is creating a new method that is no way related to the base class method. But the derived class method completely shadows/hides base class method. Unlike overriding, members sharing same name in derived class can have a totally different signature since it is a new member. Shadowing
happens by default when two members share the same name but override keyword
is not mentioned. However you can explicitly perform shadowing using a
keyword. Given below are examples to demonstrate shadowing in both the languages. Shadowing
in C#: In this example, derived class has completely shadowed member and displayMsg of baseClass. Note that the signature of member and displayMsg is different in derivedClass when compared to baseClass. This is acceptable in case of shadowing. But in overriding, it will throw error. Shadowing
in VB.NET: Public Class
derivedClass Module testModule The MessageBox will display 100 first and then Hello. Invoking
Base Class Member Using Derived Class Object: Now to your surprise, you will get the output as 100. This is because you create a reference to baseClass which is assigned with derivedClass object. Whatever is the assigned object, the reference takes priority and the baseClass member gets displayed. In this case, shadowing is suppressed.
| How do you prevent a class from overriding in .NET? | How are classes related to objects in .NET Application | How are Delegates different from Events in .NET? | How are system exceptions different from application exceptions in .NET? | How are Value Types different from Reference Types in .NET? | How can a finalize method be suppressed in .NET? | How can you call Stored Procedure in ADO.NET? | How can you force Dispose method to be called automatically in .NET? | How do you call a Base Class Constructor from Derived Class Constructor in .NET? | How do you connect your VB.NET application to SQL Server? | How do you implement Cloning in .NET? | How do you implement Façade Design Pattern in .NET? | How do you implement MVC Pattern in ASP.NET? | How do you install .NET Assembly in GAC? | How is shadowing different from overriding in .NET? | How to prevent a particular .NET DLL from being decompiled? | Illustrate Delay Signing Process of an Assembly in .NET? | What are Reference Types in .NET? | What are the advantages of C#? | What are the advantages of VB.NET? | What are the differences between Namespace and Assembly in .NET? | What are the similar features between class and structure in .NET? | What are Value Types in .NET? | What do you mean by mixed mode authentication in .NET? | What do you mean by Satellite Assembly in .NET? | What do you mean by shadowing in .NET? | What is CTS in .NET? | What is ILDASM in .NET? | What is Managed Code in .NET? | What is Manifest in .NET? | What is MSIL in .NET Framework? | What is the importance of finalize method in .NET? | What is the need for Visitor Pattern in C#? | What is the purpose of bindingRedirect tag in web.config file of .NET? | What is the purpose of CodeDom in .NET? | What is the purpose of dispose method in .NET? | What is the purpose of Ngen.exe in .NET? | What is the purpose of Strong Name in COM Components of .NET? | What is the purpose of virtual keyword in .NET? | What Object Oriented Principles can be incorporated in .NET Application? | | ||
“Amazon and the Amazon logo are trademarks of Amazon.com, Inc. or its affiliates.”
| Privacy Policy for www.dotnet-guide.com | Disclosure | Contact |
Copyright - © 2004 - 2025 - All Rights Reserved.