1. 程式人生 > 實用技巧 >C# 轉義字元

C# 轉義字元

https://blog.csdn.net/qq_38819293/article/details/88570586

程式設計中很多細節問題我們都要十分的注意,要不一個小小的字母錯誤就能引起程式的無法執行。

C#中轉義字元分2中,一種是\,一種是@。

@符號在C#中有兩個作用
作用1、在字串的前面加@表示取消字串中的轉義
例如stringpath=@"d:\root\subdir";
作用2、如果使用者定義的物件名和系統關鍵字衝突,可以在變數前面加入@
例如string@Class="thisisatest";

一些字母前加「\」來表示常見的那些不能顯示的 ASCII 字元,如 \0、\t、\n 等,就稱為轉義字元,因為後面的字元,都不是它本來的 ASCII 字元意思了。

特徵
是一種特殊的字元常量;

以反斜線「\」開頭,後面跟一個或幾個字元;

用來表示那些用一般字元不便於表示的控制程式碼;

用可以看見的字元表示那不可以看見的字元, 如「\n」表示換行;

作用是消除緊隨其後的字元的原有含義,不同於字元原有的意義,用一些普通字元的組合來代替一些特殊字元,由於其組合改變了原來字元表示的含義,故稱“轉義”字元。


常用轉義字元及含義
符號 含義
\n 換行
\r 回車
\t 製表符
\f 換頁符
\b 退格
\a 響鈴
\e escape(ASCII中的escape 字元)
\007 任何八進位制值(這裡是,007=bell(響鈴))
\x7f 任何十六進位制值(這裡是,007=bell)
\cC 一個控制符(這裡是:Ctrl+c)
\ 反斜線
" 雙引號
\l 下個字元小寫
\L 接著的字元均小寫直到\E
\u 下個字元大寫
\U 接著的字元均大寫直到\E
\Q 在 non-word 字元前加上(自動加轉義符號),直到\E
\E 結束\L,\E和\Q

\0 空格


拓展知識

一字串中的用法

Verbatim字串

對於verbatim字串,編譯器會嚴格按照原樣對其進行解釋。也就是說,即使這個字串跨越多行,或是包含轉義字元,編譯器也將不予理會,即這些格式和轉義符將按照原樣輸出。唯一例外的是引號,編譯器必須將其轉義,因為只有這樣才能確定字串的邊界。

Verbatim字串的定義語法為以@符號開始,後面緊跟包含在引號中的字串。例如:

stringsample=@"Hello";

stringsample=@"Hello\tworld";//生成Hello\tworld

以下是一個實用的示例:

stringsample=@"C:\MyDocuments\sample.txt"

;

//結果為:C:\MyDocuments\sample.txt,如同語句:stringsample="C:\\MyDocuments\\sample.txt"

若想在Verbatim字串內使用引號,必須使用附加的引號組將其轉義。例如,生成字串"Hi"的程式碼如下:

Strings=@"""Hi""";//注意:兩邊都有3個引號

上述程式碼將生成下列字串:"Hi"


字元@表示,其後的字串是個“逐字字串”(verbatimstring)。
@只能對字串常量作用。
1.用於檔案路徑
以下是引用片段:
strings_FilePath="C:\\ProgramFiles\\Microsoft.NET\\test.txt";
相當於
以下是引用片段:
strings_FilePath=@"C:\ProgramFiles\Microsoft.NET\test.txt";

2.用@表示的字串能夠跨越數行。用於在CS中寫JS或SQL程式碼比較方便。
以下是引用片段:
strings_MultiRows=@"Line1
Line2
Line3";
strings_JavaScript=@"
";

二識別符號中的用法

在C#規範中,@可以作為識別符號(類名、變數名、方法名等)的第一個字元,以允許C#中保留關鍵字作為自己定義的識別符號。

以下是引用片段:
class@class
{
publicstaticvoid@static(bool@bool){
if(@bool)
System.Console.WriteLine("true");
else
System.Console.WriteLine("false");
}
}
classClass1
{
staticvoidM(){
clu0061ss.stu0061tic(true);
}
}

注意,@雖然出現在識別符號中,但不作為識別符號本身的一部分。
因此,以上示例,定義了一個名為class的類,幷包含一個名為static的方法,以及一個引數名為了bool的形參。

這樣,對於跨語言的移植帶來了便利。因為,某個單詞在C#中作為保留關鍵字,但是在其他語言中也許不是。