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: The members of a class type are divided into the following categories: · Constants, which represent constant values associated with the class (§10.4). · Fields, which are the variables of the class (§10.5). · Methods, which implement the computations and actions that can be performed by the class (§10.6). · Properties, which define named characteristics and the actions associated with reading and writing those characteristics (§10.7). · Events, which define notifications that can be generated by the class (§10.8). · Indexers, which permit instances of the class to be indexed in the same way (syntactically) as arrays (§10.9). · Operators, which define the expression operators that can be applied to instances of the class (§10.10). · Instance constructors, which implement the actions required to initialize instances of the class (§10.11) · Destructors, which implement the actions to be performed before instances of the class are permanently discarded (§10.13). · 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 (§10.3.8). Members that can contain executable code are collectively known as the function members of the class type. The function members of a class type are the methods, properties, events, indexers, operators, instance constructors, destructors, and static constructors of that class type. A class-declaration creates a new declaration space (§3.3), 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: · Instance constructors, destructors and static constructors 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.6) of a method must differ from the signatures of all other methods declared in the same class, and two methods declared in the same class may not have signatures that differ solely by ref and out. · The signature of an instance constructor must differ from the signatures of all other instance constructors declared in the same class, and two constructors declared in the same class may not have signatures that differ solely by ref and out. · 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 type (§10.3.3) are 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).
|