C# Static and Instance Members

Members of a class are either static members or instance members. Generally speaking, it is useful to think of static members as belonging to class types and instance members as belonging to objects (instances of class types).

When a field, method, property, event, operator, or constructor declaration includes a static modifier, it declares a static member. In addition, a constant or type declaration implicitly declares a static member. Static members have the following characteristics:

• When a static member M is referenced in a member-access of the form E.M, E must denote a type containing M. It is a compile-time error for E to denote an instance.

• A static field identifies exactly one storage location to be shared by all instances of a given closed class type. No matter how many instances of a given closed class type are created, there is only ever one copy of a static field.

• A static function member (method, property, event, operator, or constructor) does not operate on a specific instance, and it is a compile-time error to refer to this in such a function member.

When a field, method, property, event, indexer, constructor, or destructor declaration does not include a static modifier, it declares an instance member. (An instance member is sometimes called a non-static member.) Instance members have the following characteristics:

• When an instance member M is referenced in a member-access of the form E.M, E must denote an instance of a type containing M. It is a compile-time error for E to denote a type.

• Every instance of a class contains a separate set of all instance fields of the class.

• An instance function member (method, property, indexer, instance constructor, or destructor) operates on a given instance of the class, and this instance can be accessed as this .

C# Tutorial

Leave a Reply

%d bloggers like this: