C# 中的 @ 符號有三大核心用法:逐字字串字面值、多行字串、允許關鍵字作為識別項。善用它能大幅簡化程式碼、提升可讀性。本文詳細說明各場景用法與範例。
在字串前加 @,字串內的反斜線 \ 不會被視為逸出字元,直接按字面意義處理。最常見於檔案路徑、正則表達式、Windows 路徑。
string fileName = "D:\\文本文件\\text.txt";
string fileName = @"D:\文本文件\text.txt";
@"^\d{4}-\d{2}-\d{2}$" 比 "^\\d{4}-\\d{2}-\\d{2}$" 更易讀加上 @ 後,字串可跨多行撰寫,保留原始格式(含縮排、換行符),無需使用 + 串接或 \n。
string strSQL = "SELECT * FROM HumanResources.Employee AS e"
+ " INNER JOIN Person.Contact AS c"
+ " ON e.ContactID = c.ContactID"
+ " ORDER BY c.LastName";
string strSQL = @"SELECT * FROM HumanResources.Employee AS e
INNER JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
ORDER BY c.LastName";
注意:字串內的縮排空白會被保留,若不想要前導空白,可搭配 string.Trim() 或在原始碼中靠左對齊。
C# 禁止關鍵字(如 class、namespace、int、static)直接作為識別項。但在識別項前加 @,即可合法使用。這在程式碼產生器、互通性場景、或需對應資料庫欄位名(如 order、group)時很實用。
namespace @namespace
{
class @class
{
public static void @static(int @int)
{
if (@int > 0)
{
System.Console.WriteLine("Positive Integer");
}
else if (@int == 0)
{
System.Console.WriteLine("Zero");
}
else
{
System.Console.WriteLine("Negative Integer");
}
}
}
}
| 場景 | 範例 |
|---|---|
| 資料庫欄位名為保留字 | var @select = db.Query("SELECT @select FROM ..."); |
| 第三方 API 參數名衝突 | method(@params: value); |
| 程式碼產生工具 | 自動產生的屬性名可能為關鍵字 |
@"",減少逸出字元錯誤@"" 多行字串,維護性極佳@keyword 為最後手段,優先考慮重新命名$@"" 組合,同時享有插值與逐字優勢掌握 @ 符號三大用法,能讓你的 C# 程式碼更乾淨、更專業、更不易出錯。