C#中@的作用(逐字字符串)及 C# 字符串转义字符
一、转义字符
C#允许按常规的转义字符处理的方式来给字符串常量赋值,如果编译器检测到你正在为一个字符串变量赋值,你在其中写的双斜扛将不会被当作注释符。例如,下面的赋值是合法的,我们可以通过下面的赋值语句给变量赋予带有双斜杠的值:
string DbSlashURL = "http://www.ciznx.com/";
string DbEscapeFullFilePath = "C:\\inetput\\ciznxcom\\"; //带转义的字符串赋值语句
这里列举一些常用的转义字符,备查:
转义符
|
字 符 名
|
字符的Unicode值
|
转义符
|
字 符 名
|
字符的Unicode值
|
\'
|
单引号
|
0x0027
|
\f
|
换页
|
0x000c
|
\"
|
双引号
|
0x0022
|
\n
|
新行
|
0x000A
|
\\
|
反斜杠
|
0x005c
|
\r
|
回车
|
0x000D
|
\0
|
空字符
|
0x0000
|
\t
|
水平制表符
|
0x0009
|
\a
|
警告(产生蜂鸣)
|
0x0007
|
\v
|
垂直制表符
|
0x000B
|
\b
|
退格
|
0x0008
|
|
|
|
二、逐字字符串
更加令我们欣喜的是,C#的作者很大方地将字符串赋值这一功能做了十分广阔的扩展:在C#中,我们可以将所有字符直接作为字符串常量的值赋给字符串量,甚至包括了平时在我们看来是一定需要转义的各种字符;要实现这一切仅需要在字符串常量的值前加一个符号“@”,以这种形式赋值的字符串叫做逐字字符串,它后面的所有字符都被逐个地收录到字符串的值中!
因此,如果你需要类似“所见所得”效果的赋值,逐字字符串赋值方式会是你的首选!
此外,需要注意的是,当使用符号 "@" 为字符串赋值时,被赋值的所有字符将不需要经过转义——只有双引号这个本身作为界限的字符需要经过转义,此时它的转义输入方法是两个放在一起的双引号:""
在以这种方式给变量赋值时,也只有这唯一一个转义是合法的。如果希望诸如换行、制表符此类字符在字符串体现出来,也可以直接将带有换行与制表符的字面量字符串赋给字符串量;不过这样,就不能在换行前的前一行写注释或其他语句,否则这些语句将被当作字符串值的一部分。
在下面例子中的语句,可以实现不完成输入一系列不经转义的特殊字符:
(1) 逐字:
string NoEscapeFullFileName = @"C:\inetpub\ciznxcom\"; // (此句中的反斜扛被直接赋值)
(2)双引号:
string StringWithDbQoute = @"Jim says,""he can reach home in about six minutes""." //(此句中双引号被转义)
(3)换行: 相当于加一个回车\r 而不是\n
string StringWithNextLineChar = @"We can set a string value for a string variable
with such a ""NextLine"" char."; // (此句中给字符串变量赋予了回车符,且未经任何转义;并且保持所有空格)
本文来自博客园,作者:mushishi,转载请注明原文链接:https://www.cnblogs.com/mushishi/archive/2013/05/13/3075990.html