Home | Contact Us

CSharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript

C# New Modifier

This C# program uses the new modifier in a derived class. New eliminates a warning.

New methods are expected to hide base methods.

The new modifier specifies that a method is supposed to hide a base method. It eliminates a warning issued by the compiler. No functionality is changed. But an annoying warning is silenced.

Example. This program introduces two classes, A and B. The B class derives from the A class. Next, class A has a public method Y, while class B has a public method Y that uses the new keyword to hide the base method Y.


Note: The new keyword prevents a warning from the C# compiler when this program is compiled.

C# program that uses new modifier

using System;

class A
    public void Y()

class B : A
    public new void Y()
	// This method HIDES A.Y.
	// It is only called through the B type reference.

class Program
    static void Main()
	A ref1 = new A(); // Different new
	A ref2 = new B();
	B ref3 = new B();




In this example, we use the A and B types. With ref1, the base class is used directly. This results in the A.Y method being used. For ref2, the base class is used with a derived class. This results in the A.Y method being used again.

Tip: For ref2, the A.Y method is used because the override keyword is not used on B.Y.


Finally: With ref3, the derived class is used directly. The "new" method B.Y is thus used.

Specification. The annotated C# specification discusses the new modifier on page 433. The main reason the new modifier is included in the language is to instruct the compiler not to issue a warning when hiding is intended.

Apparently, a common programming error occurs when a developer does not realize a method is actually hiding (not overriding) a base method. Many design features in the C# language are intended to reduce common errors like this one.

Summary. The new keyword has multiple uses. We looked at the new modifier on a method in a derived type. We then demonstrated how the object hierarchy is used to locate the correct implementation to call.

Review: We looked at some reference material for the new modifier. The new modifier is not the same as the new class constructor.