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

С# '@' перед строкой

Возможный дубликат:
Что такое @перед строкой для .NET?

Я нашел это в учебной книге С#

DirectoryInfo dir = new DirectoryInfo(key.Key.ToString() + @":\");

Однако книга не объяснила, для чего был символ "@". Я попытался найти MSDN С# Operators, но его там не указано. Я могу догадаться, что он позволяет разработчику не избегать "\" или не позволяет избежать каких-либо escape-последовательностей?

Для чего это и зачем использовать @":\" вместо ":\\"?

Спасибо за помощь

Изменить: см. комментарий ниже для аналогичного вопроса

4b9b3361

Ответ 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

Для чего это и зачем использовать @ ": \" вместо ": \"?

Потому что, когда у вас есть длинное жало со многими \, вам не нужно их избегать.