X hits on this document

894 views

0 shares

0 downloads

0 comments

81 / 396

C# LANGUAGE SPECIFICATION

class Derived: Base { new private static void F() {}// Hides Base.F in Derived only }

class MoreDerived: Derived { static void G() { F(); }// Invokes Base.F }

In the example above, the declaration of F in Derived hides the F that was inherited from Base, but since the new F in Derived has private access, its scope does not extend to MoreDerived. Thus, the call F() in MoreDerived.G is valid and will invoke Base.F.

3.8 Namespace and type names

Several contexts in a C# program require a namespace-name or a type-name to be specified. 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

A type-name is a namespace-or-type-name that refers to a type. 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.

A namespace-name is a namespace-or-type-name that refers to a namespace. 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.

The meaning of a namespace-or-type-name is determined as follows:

If the namespace-or-type-name consists of a single identifier:

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. Note that 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.

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:

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.

Otherwise, if the namespace has a corresponding namespace declaration enclosing the location where the namespace-or-type-name occurs, then:

If the namespace declaration contains a using-alias-directive that associates the given name with an imported namespace or type, then the namespace-or-type-name refers to that namespace or type.

68Copyright Microsoft Corporation 1999-2003. All Rights Reserved.

Document info
Document views894
Page views894
Page last viewedTue Dec 06 14:51:09 UTC 2016
Pages396
Paragraphs9401
Words133190

Comments