====== Visual C# 研究 ======
==== string ====
string a = "hello, world"; // hello, world
string b = @"hello, world"; // hello, world
string c = "hello \t world"; // hello world
string d = @"hello \t world"; // hello \t world
string e = "Joe said \"Hello\" to me"; // Joe said "Hello" to me
string f = @"Joe said ""Hello"" to me"; // Joe said "Hello" to me
string g = "\\\\server\\share\\file.txt"; // \\server\share\file.txt
string h = @"\\server\share\file.txt"; // \\server\share\file.txt
string i = "one\r\ntwo\r\nthree";
string j = @"one
two
three";
上面是msdn給的例子,說明了加不加@的差別,
基本上加上@就是告訴編譯器,接下來的這個字串我會全權負責,請編譯器不要自做聰明,只要如實照做就好了
如果你不加@,只要有反斜線,編譯器會以跳脫字元去解讀,比如像\t,就是按一次tab鍵的意思.
而使用@要注意的是上例的string f,我如果要顯示"時,要用""來取代.
C# @符號(小老鼠)的用處
1.限定跳脫字串
用 @ 符號加在字串前面表示其中的轉義字元“不”被處理。
例如"D:\TEMP"路徑下的text.txt檔,不加@符號的話寫法如下: string fileName= "D:\\TEMP\\text.txt";
如果使用@符號就會比較簡單: string fileName= @"D:\TEMP\text.txt";
2.讓字串連接跨行
不使用@符號,一種寫法是這樣的:
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";
3.在識別字中的用法
C#是不允許關鍵字作為識別字(類名、變數名、方法名、表空間名等)使用的,但如果加上@之後就可以了。
例如 string @string="abcdef";
int @int = 123456789;
來自