和 VB 不同, C# 在字串裡面對於反斜線符號有其特殊的定義, 因為它是所謂的逸出字元 (Escape Character)。所以你可以在字串中使用 \n 代表換行符號、使用 \t 代表 TAB 符號等等。
然而, 如果你要在字串中表示資料夾路徑的話, 就會比較麻煩了, 例如:
string filePath = "C:\My Documents\Johnny\";
如果這麼寫, 你只會看到錯誤訊息。你必須修改成:
string filePath = "C:\\My Documents\\Johnny\\";
你必須使用 "\\" 來代表 "\" 這個字元。
不過如果你在字串中有許多反斜線符號, 其實你可以使用一個小技巧來迴避這個小麻煩, 那就是使用 @ 符號:
string filePath = @"C:\My Documents\Johnny\";
這個 @ 符號是 C# 專用的, 很可惜 VB 的使用者享受不到這個好處。或許 VB 的使用者可能以為 @ 對他們本來就是多此一舉, 其實也不然; 因為 @ 符號還有其它更好用的地方, 例如:
string myScript = @"<br /><script lanuage=""JavaScript""><br /></script>";
換句話說, 巧妙的使用 @ 符號, 你就可以很輕易的把一整段文字寫進一個文字變數裡面, 而不需要使用一長串的 + 或 & (還會影響執行時期效能) 或是 StringBuilder 的 Append 指令等等。所以針對這一點, VB 使用者是應該羨慕 C# 使用者的。
@符號的多種使用
1.限定字串
用 @ 符號加在字串前面表示其中的轉義字元“不”被處理。
如果我們寫一個檔的路徑,例如"D:\文本檔"路徑下的text.txt檔,不加@符號的話寫法如下:
用 @ 符號加在字串前面表示其中的轉義字元“不”被處理。
如果我們寫一個檔的路徑,例如"D:\文本檔"路徑下的text.txt檔,不加@符號的話寫法如下:
string fileName= "D:\\文本檔\\text.txt";
如果使用@符號就會比較簡單:
string fileName= @"D:\文本檔\text.txt";
2.讓字串跨行
有時候一個字串寫在一行中會很長(比如SQL語句),不使用@符號,一種寫法是這樣的:
有時候一個字串寫在一行中會很長(比如SQL語句),不使用@符號,一種寫法是這樣的:
string strSQL= "SELECT * FROM HumanResources.Employee AS e"
+ " INNER JOIN Person.Contact AS c"
+ " ON e.ContactID = c.ContactID"
+ " ORDER BY c.LastName";
+ " 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";
INNER JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
ORDER BY c.LastName";
3.在識別字中的用法
C#是不允許關鍵字作為識別字(類名、變數名、方法名、表空間名等)使用的,但如果加上@之後就可以了,例如:
C#是不允許關鍵字作為識別字(類名、變數名、方法名、表空間名等)使用的,但如果加上@之後就可以了,例如:
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");
}
}
}
}
{
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");
}
}
}
}
沒有留言:
張貼留言