С# '@' перед строкой
Возможный дубликат:
Что такое @перед строкой для .NET?
Я нашел это в учебной книге С#
DirectoryInfo dir = new DirectoryInfo(key.Key.ToString() + @":\");
Однако книга не объяснила, для чего был символ "@". Я попытался найти MSDN С# Operators, но его там не указано. Я могу догадаться, что он позволяет разработчику не избегать "\" или не позволяет избежать каких-либо escape-последовательностей?
Для чего это и зачем использовать @":\"
вместо ":\\"
?
Спасибо за помощь
Изменить: см. комментарий ниже для аналогичного вопроса
Ответы
Ответ 1
Это означает, что нужно интерпретировать строку буквально (то есть вы не можете избежать каких-либо символов внутри строки, если используете префикс @). Это повышает читаемость в тех случаях, когда их можно использовать.
Например, если вы работаете с UNC-контуром, это:
@"\\servername\share\folder"
лучше, чем это:
"\\\\servername\\share\\folder"
Ответ 2
Это также означает, что вы можете использовать зарезервированные слова как имена переменных
скажите, что вам нужен класс с именем class, поскольку класс является зарезервированным словом, вы можете вместо этого вызвать класс класса:
IList<Student> @class = new List<Student>();
Ответ 3
Префикс строки с помощью @указывает, что ее следует рассматривать как литерал, т.е. нет экранирования.
Например, если ваша строка содержит путь, вы обычно делаете это:
string path = "c:\\mypath\\to\\myfile.txt";
@позволяет вам сделать это:
string path = @"c:\mypath\to\myfile.txt";
Обратите внимание на отсутствие двойных слэшей (экранирование)
Ответ 4
В качестве примечания следует также иметь в виду, что "экранирование" означает "использование обратной косой черты в качестве индикатора для специальных символов". Вы можете поместить конец строки в строку, выполняющую это, например:
String foo = "Hello\
There";
Ответ 5
Для чего это и зачем использовать @ ": \" вместо ": \"?
Потому что, когда у вас есть длинное жало со многими \
, вам не нужно их избегать.