Understanding C# Class and Member Modifiers 2

By Kuristosu Dei
The New keyword is usually seen as an operator that is used to create new objects. It also plays a role as a modifier in class definitions and has a totally different meaning. It is used when you want a member of a derived class to hide a member of the same name in the base class. For example, here's a simple class:

public class A
{
public int total;
}

Suppose you want to derive a new class from A and give it a member called total that is type float. Here's where you need to use the new modifier:

public class B:A
{
new float total;
}

You don't see new used very often, for two reasons. First of all, omitting new does not prevent compilation; it just results in a warning. The class works as if you had included new — that is, the member in the derived class hides the same-name member in the base class. It can be included as an indication, perhaps to some maintenance programmer down the road, that you really did mean to include the member in the derived class even though the base class already had one of that name. Second, it is usually preferred to explicitly override the base class member using the override keyword.

I hope that this brief exposition has helped you to understand all these keywords and their uses. For convenience I have summarized this information in the following table and included the Visual Basic counterparts for each of the C# keywords.

C#

VB

Class cannot be inherited (cannot be a base class).
Sealed

NotInheritable

Class cannot be instantiated but only used as based class and/or with abstract methods.

Abstract

MustInherit

For class members: member is accessible only from the class in which it is declared. For classes: only allowed on nested classes to restrict access to the nested class to the containing class..

Private

Private

For class members: member is accessible only from types defined in the same assembly. For classes: class is accessible only from types in the same assembly.

Internal

Friend

For members: member is accessible from the class in which it is declared and from any class derived from that class.

Protected

Protected

Combines the access of Protected and Internal for a class member

Protected Internal

Protected Friend

Access is not restricted.

Public

Public

Hides a member inherited from a base class.

New

Shadows

Copyright © 2005 Ziff Davis Media Inc. All Rights Reserved. Originally appearing in Dev Source.
 

0 comments so far.

Something to say?