字面值
在前面的示例中,有两个字面值的示例:整数(17)和字符串("\"myInteger\" is")。其他变量类型也有相关的字面值,如表 3-4 所示
。其中有许多涉及后缀,即在字面值的后面添加一些字符,来指定想要的类型。一些字面值有多种类型,在编译时由编译器根据它们的上下文确定其类型(同样 见表 3-4
)
类型 | 类别 | 后缀 | 示例/允许的值 |
---|---|---|---|
bool | 布尔 | 无 | true 或 false |
int, uint, long, ulong | 整数 | 无 | 100 |
uint, ulong | 整数 | u 或 U | 100U |
long, ulong | 整数 | l 或 L | 100L |
ulong | 整数 | ul、uL、UI、UL、lu、lU、Lu 或 LU | 100UL |
float | 实数 | f 或 F | 1.5F |
double | 实数 | 无、d 或 D | 1.5 |
decimal | 实数 | m 或 M | 1.5M |
表3-4 字面值
字符串的字面值
本章前面介绍了几个可在字符串的字面值中使用的转义序列,表 3-5
是这些转义序列的完整列表,以便以后引用。
表3-5 字符串字面值的转义序列
转义序列 | 产生的字符 | 字符的 Unicode 值 |
---|---|---|
\' | 单引号 | 0x0027 |
\" | 双引号 | 0x0022 |
\ | 反斜杠 | 0x005C |
\0 | 空 | 0x0000 |
\a | 警告(产生蜂鸣) | 0x0007 |
\b | 退格 | 0x0008 |
\f | 换页 | 0x000C |
\n | 换行 | 0x000A |
\r | 回车 | 0x000D |
\t | 水平制表符 | 0x0009 |
\v | 垂直制表符 | 0x000B |
&emsp 表 3-5
中的 “字符的 Unicode 值” 列是字符在 Unicode 字符集中的 16 进制值。除了上面这些,还可以使用 Unicode 转义序列指定其他任何 Unicode 字符,该转义序列包括标准的 \ 字符,后跟一个 u 和一个 4 位十六进制值(例如,表 3-5
中 x 后面的 4 位数字)。
下面的字符串是等价的:
"Karli\'s string."
"Karli\u0027s string."
显然,Unicode 转义序列还有更多用途。
也可以一字不变地指定字符串,即两个双引号之间的所有字符都包含在字符串中,包括行末字符和原本需要转义的字符。唯一的例外是必须指定双引号字符的转义序列,以免结束字符串。这种方法需要在字符串之前加一个 @
字符:
@"Verbatim string literal."
也可以用普通方式指定这个字符串,但下面的字符串就必须使用 @
字符:
@"A short list:
item 1
item 2"
一字不变的字符串在文件中非常有用,因为文件名中大量使用了反斜杠字符。如果使用一般的字符串,就必须在字符串使用两个反斜杠,例如:
"C:\\Temp\\MyDir\\MyFile.doc"
从本书的后面可以看出,字符串是引用类型,而本章中的其他类型都是值类型。所以,字符串也可以被赋予null
值,表示字符串变量不引用字符串(或其他任何东西)。