Что делает префикс @ для строковых литералов в C # - PullRequest
46 голосов
/ 26 мая 2011

Я прочитал статью на C #, чтобы объединить путь, используя Path.Combine (part1, part2).

Используется следующее:

string part1 = @"c:\temp";
string part2 = @"assembly.txt";

Могу ли я узнать, что такое @ в части 1 и части 2?

Ответы [ 6 ]

59 голосов
/ 26 мая 2011

@ не связан ни с одним методом.

Это означает, что вам не нужно экранировать специальные символы в строке, следующей за символом:

@"c:\temp"

равноto

"c:\\temp"

Такая строка называется «дословно» или @-цитируется.См. MSDN .

17 голосов
/ 26 мая 2011

Как и другие говорили, это один способ, чтобы вам не нужно было экранировать специальные символы, и он очень полезен при указании путей к файлам.

string s1 =@"C:\MyFolder\Blue.jpg";

Еще одно использование - когда у вас большие строки и вы хотите ихдля отображения на нескольких строках, а не на длинной.

string s2 =@"This could be very large string something like a Select query
which you would want to be shown spanning across multiple lines 
rather than scrolling to the right and see what it all reads up";
14 голосов
/ 26 мая 2011

Как указано в C # Спецификация языка 4.0 :

2.4.4.5 Строковые литералы

C # поддерживает две формы строки литералы: обычные строковые литералы и дословные строковые литералы. Обычный строковый литерал состоит из нуля или больше символов в двойном кавычки, как в "привет", и могут включать в себя обе простые escape-последовательности (такие как \ t для символа табуляции) и шестнадцатеричный и Unicode escape последовательности. Строковый литерал состоит из символа @, за которым следует символ двойной кавычки, ноль или более символы и закрывающая двойная кавычка персонаж. Простой пример @"Привет". В дословной строке буквально, символы между разделители интерпретируются дословно, единственное исключение, являющееся цитата-спусковая последовательность. Особенно, простые escape-последовательности и шестнадцатеричный и Unicode escape последовательности не обрабатываются в дословные строковые литералы.

4 голосов
/ 26 мая 2011

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

Без использования @ первая строка вашего примера должна быть:

string part1 = "c:\\temp";

Подробнее здесь .

1 голос
/ 26 мая 2011

@ просто указывает на другой способ указания строки, так что вам не нужно экранировать символы с помощью. Единственное предостережение в том, что двойные кавычки должны быть "", чтобы представлять один ".

1 голос
/ 26 мая 2011

С @ вам не нужно экранировать специальные символы.

Таким образом, вы должны написать «c: \\ temp» без @

Если больше, то это называется «дословными» строками.Вы можете прочитать здесь об этом:
http://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx

...