Подтвердить что ты не робот

Что делает префикс @для строковых литералов в С#

Я прочитал некоторые статьи С#, чтобы объединить путь, используя Path.Combine (часть1, часть2).

Он использует следующее:

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

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

4b9b3361

Ответ 1

@ не относится ни к какому методу.

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

@"c:\temp"

равно

"c:\\temp"

Такая строка называется "verbatim" или @-quoted. См. MSDN.

Ответ 2

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

string s1 [email protected]"C:\MyFolder\Blue.jpg";

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

string s2 [email protected]"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";

Ответ 3

Как указано в С# Language Specification 4.0:

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

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

Ответ 4

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

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

string part1 = "c:\\temp";

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

Ответ 5

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

Итак, вам нужно будет написать "c:\\temp" без @

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

Ответ 6

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