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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM