3.4 Members
Namespaces and types have members. The members of an entity are generally available by using a qualified name that starts with a reference to the entity, followed by a "." token, followed by the name of the member.
Members of a type are either declared in the type or inherited from the base class of the type. When a type inherits from a base class, all members of the base class (except instance constructors, destructors, and static constructors) become members of the derived type. The declared accessibility of a base class member does not control whether the member is inherited—inheritance extends to any member that is not an instance constructor, static constructor, or destructor. However, an inherited member may not be accessible in a derived type either because of its declared accessibility (§3.5.1) or because it is hidden by a declaration in the type itself (§3.7.1.2).
3.4.1 Namespace Members
Namespaces and types that have no enclosing namespace are members of the global namespace. This corresponds directly to the names declared in the global declaration space.
Namespaces and types declared within a namespace are members of that namespace. This corresponds directly to the names declared in the declaration space of the namespace.
Namespaces have no access restrictions. It is not possible to declare private, protected, or internal namespaces, and namespace names are always publicly accessible.
3.4.2 Struct Members
The members of a struct are the members declared in the struct and the members inherited from the struct’s direct base class System.ValueType and the indirect base class object.
The members of a simple type correspond directly to the members of the struct type aliased by the simple type.
- The members of sbyte are the members of the System.SByte struct.
- The members of byte are the members of the System.Byte struct.
- The members of short are the members of the System.Int16 struct.
- The members of ushort are the members of the System.UInt16 struct.
- The members of int are the members of the System.Int32 struct.
- The members of uint are the members of the System.UInt32 struct.
- The members of long are the members of the System.Int64 struct.
- The members of ulong are the members of the System.UInt64 struct.
- The members of char are the members of the System.Char struct.
- The members of float are the members of the System.Single struct.
- The members of double are the members of the System.Double struct.
- The members of decimal are the members of the System.Decimal struct.
- The members of bool are the members of the System.Boolean struct.
3.4.3 Enumeration Members
The members of an enumeration are the constants declared in the enumeration and the members inherited from the enumeration’s direct base class System.Enum and the indirect base classes System.ValueType and object.
3.4.4 Class Members
The members of a class are the members declared in the class and the members inherited from the base class (except for the class object, which has no base class). The members inherited from the base class include the constants, fields, methods, properties, events, indexers, operators, and types of the base class, but not the instance constructors, destructors, and static constructors of the base class. Base class members are inherited without regard to their accessibility.
A class declaration may contain declarations of constants, fields, methods, properties, events, indexers, operators, instance constructors, destructors, static constructors, and types.
The members of object and string correspond directly to the members of the class types they alias.
- The members of object are the members of the System.Object class.
- The members of string are the members of the System.String class.
3.4.5 Interface Members
The members of an interface are the members declared in the interface and in all base interfaces of the interface. The members in class object are not, strictly speaking, members of any interface (§13.2). However, the members in class object are available via member lookup in any interface type (§7.3) and the members inherited from the class object.
3.4.6 Array Members
The members of an array are the members inherited from the class System.Array.
3.4.7 Delegate Members
The members of a delegate are the members inherited from the class System.Delegate.