Table of Contents 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Notes DownloadECMA-334 C# Language Specification 10 Basic concepts 10.8 Namespace and type names
Paragraph 11 Several contexts in a C# program require a namespace-name or a type-name to be specified. 2 Either form of name is written as one or more identifiers separated by "." tokens. namespace-name : namespace-or-type-name type-name : namespace-or-type-name namespace-or-type-name : identifier namespace-or-type-name . identifier
Paragraph 21 A type-name is a namespace-or-type-name that refers to a type. 2 Following resolution as described below, the namespace-or-type-name of a type-name must refer to a type, or otherwise a compile-time error occurs.
Paragraph 31 A namespace-name is a namespace-or-type-name that refers to a namespace. 2 Following resolution as described below, the namespace-or-type-name of a namespace-name must refer to a namespace, or otherwise a compile-time error occurs.
Paragraph 41 The meaning of a namespace-or-type-name is determined as follows:
- 2 If the namespace-or-type-name consists of a single identifier:
- 3 If the namespace-or-type-name appears within the body of a class or struct declaration, then starting with that class or struct declaration and continuing with each enclosing class or struct declaration (if any), if a member with the given name exists, is accessible, and denotes a type, then the namespace-or-type-name refers to that member. 4 Non-type members (constants, fields, methods, properties, indexers, operators, instance constructors, destructors, and static constructors) are ignored when determining the meaning of a namespace-or-type-name.
- 5 Otherwise, starting with the namespace in which the namespace-or-type-name occurs, continuing with each enclosing namespace (if any), and ending with the global namespace, the following steps are evaluated until an entity is located:
- 6 If the namespace contains a namespace member with the given name, then the namespace-or-type-name refers to that member and, depending on the member, is classified as a namespace or a type.
- 7 Otherwise, if the namespace has a corresponding namespace declaration enclosing the location where the namespace-or-type-name occurs, then:
- 11 Otherwise, the namespace-or-type-name is undefined and a compile-time error occurs.
- 12 Otherwise, the namespace-or-type-name is of the form N.I, where N is a namespace-or-type-name consisting of all identifiers but the rightmost one, and I is the rightmost identifier. 13 N is first resolved as a namespace-or-type-name. 14 If the resolution of N is not successful, a compile-time error occurs. 15 Otherwise, N.I is resolved as follows:
- 16 If N is a namespace and I is the name of an accessible member of that namespace, then N.I refers to that member and, depending on the member, is classified as a namespace or a type.
- 17 If N is a class or struct type and I is the name of an accessible type in N, then N.I refers to that type.
- 18 Otherwise, N.I is an invalid namespace-or-type-name, and a compile-time error occurs.
|Jagger Software Ltd|
|Company # 4070126|
|VAT # 762 5213 42|