9.4.2 Identifiers

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

9.4.2 Identifiers

The rules for identifiers given in this section correspond exactly to those

recommended by the Unicode Standard

Annex 15 except that underscore is allowed as an initial character (as is

traditional in the C programming

language), Unicode escape sequences are permitted in identifiers, and the

.@. character is allowed as a prefix to

enable keywords to be used as identifiers.

identifier::

available-identifier

@ identifier-or-keyword

available-identifier::

An identifier-or-keyword that is not a keyword

identifier-or-keyword::

identifier-start-character identifier-part-charactersopt

identifier-start-character::

letter-character

_ (the underscore character U+005F)

identifier-part-characters::

identifier-part-character

identifier-part-characters identifier-part-character

identifier-part-character::

letter-character

decimal-digit-character

connecting-character

combining-character

formatting-character

letter-character::

A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl

A unicode-escape-sequence representing a character of classes Lu, Ll, Lt,

Lm, Lo, or Nl

combining-character::

A Unicode character of classes Mn or Mc

A unicode-escape-sequence representing a character of classes Mn or Mc

decimal-digit-character::

A Unicode character of the class Nd

A unicode-escape-sequence representing a character of the class Nd

C# LANGUAGE SPECIFICATION

56

connecting-character::

A Unicode character of the class Pc

A unicode-escape-sequence representing a character of the class Pc

formatting-character::

A Unicode character of the class Cf

A unicode-escape-sequence representing a character of the class Cf

[Note: For information on the Unicode character classes mentioned above,

see The Unicode Standard,

Verson 3.0, §4.5.) end note]

[Example: Examples of valid identifiers include .identifier1.,

._identifier2., and .@if.. end example]

An identifier in a conforming program must be in the canonical format

defined by Unicode Normalization

Form C, as defined by Unicode Standard Annex 15. The behavior when

encountering an identifier not in

Normalization Form C is implementation-defined; however, a diagnostic is

not required.

The prefix .@. enables the use of keywords as identifiers, which is useful

when interfacing with other

programming languages. The character @ is not actually part of the

identifier, so the identifier might be seen in

other languages as a normal identifier, without the prefix. An identifier

with an @ prefix is called a verbatim

identifier. [Note: Use of the @ prefix for identifiers that are not

keywords is permitted, but strongly discouraged

as a matter of style. end note]

[Example: The example:

class @class

{

public static void @static(bool @bool) {

if (@bool)

System.Console.WriteLine("true");

else

System.Console.WriteLine("false");

}

}

class Class1

{

static void M() {

cl\u0061ss.st\u0061tic(true);

}

}

defines a class named .class. with a static method named .static. that

takes a parameter named .bool..

Note that since Unicode escapes are not permitted in keywords, the token

.cl\u0061ss. is an identifier, and is

the same identifier as .@class.. end example]

Two identifiers are considered the same if they are identical after the

following transformations are applied, in

order:

. The prefix .@., if used, is removed.

. Each unicode-escape-sequence is transformed into its corresponding

Unicode character.

. Any formatting-characters are removed.

Identifiers containing two consecutive underscore characters (U+005F) are

reserved for use by the

implementation; however, no diagnostic is required if such an identifier is

defined. [Note: For example, an

implementation might provide extended keywords that begin with two

underscores. end note]

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航