Что означает `@` в начале строки в C #? - PullRequest
9 голосов
/ 15 апреля 2010

Рассмотрим следующую строку:

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

В этой строке почему @ необходимо присоединить?

Ответы [ 3 ]

17 голосов
/ 15 апреля 2010

Обозначает буквенную строку, в которой символ '\' не обозначает escape-последовательность.

9 голосов
/ 15 апреля 2010

@ говорит C # рассматривать его как буквенную строку дословную строку буквальный . Например:

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

является ошибкой, поскольку \W и \M не являются допустимыми escape-последовательностями. Вам нужно написать это так:

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 голосов
/ 15 апреля 2010

потому что ваша строка содержит escape-последовательность "\". чтобы сказать компилятору не рассматривать "\" как escape-последовательность, вы должны использовать "@".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...