`@`在C#中字符串的开头是什么意思?

时间:2010-04-14 23:51:06

标签: c# string

考虑以下一行:

readonly private string TARGET_BTN_IMG_URL = @"\\ad1-sunglim\Test\";

在这一行中,为什么需要附加@?

3 个答案:

答案 0 :(得分:17)

它表示一个文字字符串,其中'\'字符不表示转义序列。

答案 1 :(得分:9)

@告诉C#将其视为文字字符串 verbatim string literal。例如:

string s = "C:\Windows\Myfile.txt";

是错误,因为\W\M不是有效的转义序列。你需要这样写:

string s = "C:\\Windows\\Myfile.txt";

为了更清楚,您可以使用文字字符串,它不会将\识别为特殊字符。因此:

string s = @"C:\Windows\Myfile.txt";

完全没问题。


编辑:MSDN提供了以下示例:

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";

答案 2 :(得分:2)

因为你的字符串包含转义序列“\”。为了告诉编译器不要将“\”视为转义序列,你必须使用“@”。