This is preliminary documentation and subject to change.
To comment on this topic, please send us email at ngwssdk@microsoft.com. Thanks!
10.2 Class members
The members of a class consist of the members introduced by its class-member-declarations and the members inherited from the direct base class.
- class-member-declarations:
- class-member-declaration
class-member-declarations class-member-declaration
- class-member-declaration:
- constant-declaration
field-declaration
method-declaration
property-declaration
event-declaration
indexer-declaration
operator-declaration
constructor-declaration
destructor-declaration
static-constructor-declaration
type-declaration
The members of a class are divided into the following categories:
- Constants, which represent constant values associated with the class (§10.3).
- Fields, which are the variables of the class (§10.4).
- Methods, which implement the computations and actions that can be performed by the class (§10.5).
- Properties, which define named attributes and the actions associated with reading and writing those attributes (§10.6).
- Events, which define notifications that are generated by the class (§10.7).
- Indexers, which permit instances of the class to be indexed in the same way as arrays (§10.8).
- Operators, which define the expression operators that can be applied to instances of the class (§10.9).
- Instance constructors, which implement the actions required to initialize instances of the class (§10.10)
- Destructors, which implement the actions to perform before instances of the class are permanently discarded (§10.11).
- Static constructors, which implement the actions required to initialize the class itself (§10.12).
- Types, which represent the types that are local to the class (§9.5).
Members that contain executable code are collectively known as the function members of the class. The function members of a class are the methods, properties, indexers, operators, constructors, and destructors of the class.
A class-declaration creates a new declaration space (§3.1), and the class-member-declarations immediately contained by the class-declaration introduce new members into this declaration space. The following rules apply to class-member-declarations:
- Constructors and destructors must have the same name as the immediately enclosing class. All other members must have names that differ from the name of the immediately enclosing class.
- The name of a constant, field, property, event, or type must differ from the names of all other members declared in the same class.
- The name of a method must differ from the names of all other non-methods declared in the same class. In addition, the signature (§3.4) of a method must differ from the signatures of all other methods declared in the same class.
- The signature of an indexer must differ from the signatures of all other indexers declared in the same class.
- The signature of an operator must differ from the signatures of all other operators declared in the same class.
The inherited members of a class (§10.2.1) are specifically not part of the declaration space of a class. Thus, a derived class is allowed to declare a member with the same name or signature as an inherited member (which in effect hides the inherited member).