C# 中 @ 的兩種用法

  • 600
  • 0

@ 在 C# 被定義為『特殊字元 (special characters)』, 簡單介紹 @ 的兩種用法。

1. 逐字解譯字串常值

 這個用法大家一定很熟悉,在沒有 @ 以前,字串中遇到 \ 符號就是個麻煩事,例如 "C:\MyFolder\MyFile.txt" 必須要寫成:

string s = "C:\\MyFolder\\MyFile.txt" 

然後就常常為了搞那一根兩根煩得要命。有了  @ 的世界就簡單多了:

string s = @"C:\MyFolder\MyFile.txt" 
2. 識別項解譯

第二個用法就比較少見了,就是當需要使用 C# 關鍵字當成識別項的時候使用,幸好這種用法應該也不常見,就當作茶餘飯後的話題聊聊。舉個例子來說我想拿 static 和 int  來當成變數名稱,就可以這樣使用:

 var @static = "static";
 int @int = 100;
 Console.WriteLine(@static);
 Console.WriteLine(@int);
@ 和 $ (字串差補) 的相對關係

在 C# 7.3 或更低的編譯器版本下,同時使用 $ 和 @ 的時候,$ 必須位於 @ 的前方:

 var i1 = 100;
 var i2 = 99;
 string s1 = $@"{i1}\{i2}";

但在 C# 8.0 後則 @ 在 $ 的前後方都是可行的:

 var i1 = 100;
 var i2 = 99;
 string s1 = @$"{i1}\{i2}";