C#的 char (System.Char类型的别名)类型表示一个Unicode字符并占用两个字节(UTF-16)。 char 字面量应位于两个单引号之间:
转义序列指那些不能用字面量表示或解释的字符。转义字符由反斜线和一个表示特殊含义的字符组成,例如:
表2-2中列出了转义序列字符。
表2-2:转义序列字符
表2-2:转义序列字符(续)
\u (或 \x )转义字符通过4位十六进制代码来指定任意Unicode字符:
若从 char 类型隐式转换为数值类型,则这个数值类型必须能够容纳无符号 short 类型。对于其他的数值类型,则需要显式转换。
C#中的字符串类型( System.String 类型的别名,我们将在第6章详细介绍)表示不可变(创建之后即无法更改)的Unicode字符序列。字符串字面量应位于两个双引号之间:
string 类型是引用类型而不是值类型,但是它的相等运算符却遵守值类型的语义:
字符串中的转义字符和 char 字面量的转义字符是一致的:
这意味着当需要一个反斜杠时,需要写两次才可以:
为避免这种情况,C#引入了原意字符串字面量。原意字符串字面量要加 @ 前缀,它不支持转义字符。下面的原意字符串和之前的字符串是一样的:
原意字符串可以贯穿多行:
原意字符串中需要用两个双引号来表示一个双引号字符:
+ 运算符可连接两个字符串:
如果操作数之一是非字符串值,则会调用 ToString 方法将其转换为字符串:
重复使用 + 运算符来构建字符串是低效的。更好的解决方案是使用 System.Text.StringBuilder 类型(将在第6章介绍)。
以 $ 字符为前缀的字符串称为插值字符串。插值字符串可以在大括号内包含表达式:
大括号内可以是任意类型的合法C#表达式。C#会调用 ToString 方法或等价方法将表达式转换为字符串。如需更改表达式的格式,可以使用冒号,并附加格式字符串(我们将在6.1.2.7节中进行详细介绍):
如果代码中的冒号有其他用途(例如,三元条件运算符),则需要将整个表达式使用括号包裹起来:
插值字符串只能在单行内声明。如需在多行中声明字符串,请使用原意字符串运算符:
若要在插值字符串中表示大括号,只需书写两个大括号字符即可。
string 类型不支持 < 和 > 的比较,必须使用字符串的 CompareTo 方法。我们将在第6章介绍这部分内容。
从C# 10开始,如果字符串插值中的值为常量(字符串),则插值后的字符串仍然可以是常量: