一、轉義字符
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."; // (此句中給字符串變量賦予了回車符,且未經任何轉義;並且保持所有空格)