@ 在 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}";