Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Namespace and type names

C sharp



+ Font mai mare | - Font mai mic



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 an 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 an 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 (instance constructors, static constructors, destructors, constants, fields, methods, properties, indexers, and operators) are ignored when determining the meaning of a namespace-or-type-name.

Otherwise, starting with the namespace declaration in which the namespace-or-type-name occurs (if any), continuing with each enclosing namespace declaration (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 declaration contains a using-alias-directive (9.3.1) that associates the given name with an imported namespace or type, then the namespace-or-type-name refers to that namespace or type.

Otherwise, if the namespaces imported by the using-namespace-directives (9.3.2) of the namespace declaration contain exactly one type with the given name, then the namespace-or-type-name refers to that type.

Otherwise, if the namespaces imported by the using-namespace-directives of the namespace declaration contain more than one type with the given name, then the namespace-or-type-name is ambiguous and an error occurs.

Otherwise, the namespace-or-type-name is undefined and an error occurs.

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. N is first resolved as a namespace-or-type-name. If the resolution of N is not successful, an error occurs. Otherwise, N.I is resolved as follows:

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.

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.

Otherwise, N.I is an invalid namespace-or-type-name, and an error occurs.

Fully qualified names

Every namespace and type has a fully qualified name which uniquely identifies the namespace or type amongst all others. The fully qualified name of a namespace or type N is determined as follows:

If N is a member of the global namespace, its fully qualified name is N.

Otherwise, its fully qualified name is S.N, where S is the fully qualified name of the namespace or type in which N is declared.

In other words, the fully qualified name of N is the complete hierarchical path of identifiers that lead to N, starting from the global namespace. Because every member of a namespace or type must have a unique name, it follows that the fully qualified name of a namespace or type is always unique.

The example below shows several namespace and type declarations along with their associated fully qualified names.

class A // A

namespace X // X
{
class B // X.B
{
class C // X.B.C
}

namespace Y // X.Y
{
class D // X.Y.D
}
}

namespace X.Y // X.Y
{
class E // X.Y.E
}



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 784
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved