博文
C# 语言规范--2.4.4.5 字符串(2006-09-04 10:07:00)
摘要:C# 支持两种形式的字符串:规则字符串和逐字字符串。
规则字符串由包含在双引号中的零个或多个字符组成(如 "hello"),并且可以包含简单转义序列(如表示制表符的 \t)、十六进制转义序列和 Unicode 转义序列。
逐字字符串由 @ 字符后跟开始的双引号字符、零个或多个字符以及结束的双引号字符组成。一个简单的示例就是 @"hello"。在逐字字符串中,分隔符之间的字符逐字解释,唯一的例外是“引号转义序列”。具体说来,在逐字字符串中不处理简单转义序列以及十六进制和 Unicode 转义序列。逐字字符串可以跨多行。
string-literal:(字符串:)
regular-string-literal(规则字符串)
verbatim-string-literal(逐字的字符串)
regular-string-literal:(规则字符串:)
" regular-string-literal-charactersopt "(" 规则字符串字符可选 ")
regular-string-literal-characters:(规则字符串字符:)
regular-string-literal-character(规则字符串字符)
regular-string-literal-characters regular-string-literal-character(规则字符串字符 规则字符串字符)
regular-string-literal-character:(规则字符串字符:)
single-regular-string-literal-character(单个规则字符串字符)
simple-escape-sequence(简单转义序列)
hexadecimal-escape-sequence(十六进制转义序列)
unicode-escape-sequence(unicode 转义序列)
single-regular-string-literal-character:(单个规则字符串字符:)
......
C# 语言规范--2.4.4.4 字符(2006-09-04 10:06:00)
摘要:字符表示单个字符,通常由置于引号中的一个字符组成,如 'a'。
character-literal:(字符:)
' character '(' 字符 ')
character:(字符:)
single-character(单字符)
simple-escape-sequence(简单转义序列)
hexadecimal-escape-sequence(十六进制转义序列)
unicode-escape-sequence(unicode 转义序列)
single-character:(单字符:)
除 ' (U+0027)、\ (U+005C) 和换行符外的任何字符
simple-escape-sequence: one of(简单转义序列:下列之一)
\' \" \\ \0 \a \b \f \n \r \t \v
hexadecimal-escape-sequence:(十六进制转义序列:)
\x hex-digit hex-digitopt hex-digitopt hex-digitopt(\x 十六进制数字 十六进制数字可选 十六进制数字可选 十六进制数字可选)
“字符”中跟在反斜杠字符 (\) 后面的字符必须是下列字符之一:'、"、\、0、a、b、f、n、r、t、u、U、x、v。否则将发生编译时错误。
十六进制转义序列表示单个 Unicode 字符,它的值由“\x”后接十六进制数组成。
如果一个字符表示的值大于 U+FFFF,则将发生编译时错误。
字符中的 Unicode 字符转义序列(第 2.4.1 节)必须在 U+0000 到 U+FFFF 的范围内。
一个简单转义序列表示一个 Unicode 字符编码,详见下表。
转义序列
字符名称
Unicode 编码
\......
C# 语言规范--2.4.4.3 实数(2006-09-04 10:05:00)
摘要:实数用于编写类型 float、double 和 decimal 的值。
real-literal:(实数:)
decimal-digits . decimal-digits exponent-partopt real-type-suffixopt(十进制数字 . 十进制数字 指数部分可选 实数类型后缀可选)
. decimal-digits exponent-partopt real-type-suffixopt(. 十进制数字 指数部分可选 实数类型后缀可选)
decimal-digits exponent-part real-type-suffixopt(十进制数字 指数部分 实数类型后缀可选)
decimal-digits real-type-suffix(十进制数字 实数类型后缀)
exponent-part:(指数部分:)
e signopt decimal-digits(e 符号可选 十进制数字)
E signopt decimal-digits(E 符号可选 十进制数字)
sign: one of(符号:下列之一)
+ -
real-type-suffix: on......
C# 语言规范--2.4.4.2 整数(2006-09-03 18:37:00)
摘要:整数用于编写类型 int、uint、long 和 ulong 的值。整数具有两种可能的形式:十进制和十六进制。
integer-literal:(整数:)
decimal-integer-literal(十进制整数)
hexadecimal-integer-literal(十六进制整数)
decimal-integer-literal:(十进制整数:)
decimal-digits integer-type-suffixopt(十进制数字 整数类型后缀可选)
decimal-digits:(十进制数字:)
decimal-digit(十进制数字)
decimal-digits decimal-digit(十进制数字 十进制数字)
decimal-digit: one of(十进制数字:下列之一)
0 1 2 3 4 5 6 7 8 9
integer-type-suffix: one of(整数类型后缀:下列之一)
U u L l UL Ul uL ul LU Lu lU lu
hexadecimal-integer-literal:(十六进制整数:)
0x hex-digits integer-type-suffixopt(0x 十六进制数字 整型后缀可选)
0X hex-digits integer-type-suffixopt(0X 十六进制数字 整型后缀可选)
hex-digits:(十六进制数字:)
hex-digit(十六进制数字)
hex-digits hex-digit(十六进制数字 十六进制数字)
hex-digit: one of(十六进制数字:下列之一)
0 1 2 3 4 5 6 7 ......
C# 语言规范--2.4.4.1 布尔值(2006-09-03 18:37:00)
摘要:有两种布尔值:true 和 false。
boolean-literal:(布尔值:)
true
false
布尔值的类型为 bool。
......
C# 语言规范--2.4.4 文本(2006-09-03 18:36:00)
摘要:文本是值的源代码表示形式。
literal:(文本:)
boolean-literal(布尔值)
integer-literal(整数)
real-literal(实数)
character-literal(字符)
string-literal(字符串)
null-literal(空值)
......
C# 语言规范--2.4.3 关键字(2006-09-03 18:36:00)
摘要:关键字是类似标识符的保留的字符序列,不能用作标识符(以 @ 字符开头时除外)。
keyword: one of(关键字:下列之一)
abstract
as
base
bool
break
byte
case
catch
char
checked
class
const
continue
decimal
default
delegate
do
double
else
enum
event
explicit
extern
false
finally
fixed
float
for
foreach
goto
if
implicit
in
int
interface
internal
is
lock
long
namespace
new
null
object
operator
out
override
params
private
protected
public
readonly
ref
return
sbyte
sealed
short
sizeof
stackalloc
static
string
struct
switch
this
throw
true
try
typeof
uint
ulong
unchecked
unsafe
ushort
using
virtual
void
volatile
while
在文法中的某些位置,特定的标识符有特殊的含义,但不是关键字。例如,在属性声明中,“get”和“set”标识符有特殊的含义(第 10.6.2 节)。在这些位置决不允许使用 get 或 set 以外的标识符,因此这种用法不会与将这些字用作标识符冲突。
......
C# 语言规范--2.4.2 标识符(2006-09-03 18:36:00)
摘要:本节给出的标识符规则完全符合 Unicode 标准附件 15 推荐的规则,但以下情况除外:允许将下划线用作初始字符(这是 C 编程语言的传统),允许在标识符中使用 Unicode 转义序列,以及允许“@”字符作为前缀以使关键字能够用作标识符。
identifier:(标识符:)
available-identifier(可用的标识符)
@ identifier-or-keyword(@ 标识符或关键字)
available-identifier:(可用的标识符:)
不是“关键字”的“标识符或关键字”
identifier-or-keyword:(标识符或关键字:)
identifier-start-character identifier-part-charactersopt(标识符开始字符 标识符部分字符可选)
identifier-start-character:(标识符开始字符:)
letter-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:(字母字符:)
类 Lu、Ll、Lt、Lm、Lo 或 Nl 的 Unicode 字符
表示类 Lu、Ll、Lt、Lm、Lo 或 Nl 的字符......
C# 语言规范--2.4.1 Unicode 字符转义序列(2006-09-03 18:35:00)
摘要:Unicode 字符转义序列表示一个 Unicode 字符。Unicode 字符转义序列在标识符(第 2.4.2 节)、字符(第 2.4.4.4 节)和规则字符串(第 2.4.4.5 节)中处理。不在其他任何位置处理 Unicode 字符转义(例如,在构成运算符、标点符号或关键字时)。
unicode-escape-sequence:(unicode 转义序列:)
\u hex-digit hex-digit hex-digit hex-digit(\u 十六进制数字 十六进制数字 十六进制数字 十六进制数字)
\U hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit(\U 十六进制数字 十六进制数字 十六进制数字 十六进制数字 十六进制数字 十六进制数字 十六进制数字 十六进制数字)
Unicode 转义序列表示由“\u”或“\U”字符后面的十六进制数字构成的单个 Unicode 字符。由于 C# 在字符和字符串值中使用 Unicode 代码点的 16 位编码,因此从 U+10000 到 U+10FFFF 的 Unicode 字符不能在字符中使用,在字符串中则用一个 Unicode 代理项对来表示。不支持代码数据点在 0x10FFFF ......
C# 语言规范--2.4 标记(2006-09-03 18:35:00)
摘要:有若干种标记:标识符、关键字、文本、运算符和标点符号。空白和注释不是标记,但它们可充当标记的分隔符。
token:(标记:)
identifier(标识符)
keyword(关键字)
integer-literal(整数)
real-literal(实数)
character-literal(字符)
string-literal(字符串)
operator-or-punctuator(运算符或标点) ......