Возможный дубликат:
Какое обоснование позволяет избежать`? `?
Если я могу это сделать:
string i = "'";
Зачем это:
string i = "\'";
Возможный дубликат:
Какое обоснование позволяет избежать`? `?
Если я могу это сделать:
string i = "'";
Зачем это:
string i = "\'";
Вам нужно это, если вы хотите символьный литерал:
char apos = '\'';
Вам это нужно, если вам нужен '
char:
char c = '\'';
Я думаю, что это просто для согласованности между символьными константами и строковыми литералами.
Язык мог потребовать строковый литерал, содержащий один апостроф, который должен быть записан как "'"
, а не как "\'"
, символьная константа, содержащая двойную кавычку, которая должна быть записана как '"'
, а не как '\"'
. (И, конечно, "'"
и '"'
оба абсолютно правильны.)
Предоставление, но не требующее, '
для экранирования в строковых литералах и "
для экранирования в символьных константах, делает язык немного более гибким, позволяет строковым литералам и символьным константам использовать один и тот же набор побегов и не наносит особого вреда.
Что касается того, почему вы должны использовать одну или другую форму, это до вас. Используйте любую форму, с которой вам удобнее.
Как сказал Керрек, вы избегаете символа, если вам нужен буквальный символ, а не оцененный. Например, "\" или буквальная скобка внутри регулярного выражения. Он не позволяет интерпретатору оценивать escape-символ как что-либо, кроме фактического значения символа.
Предположим, что если вы хотите сгенерировать html для привязки с serveride, очевидно, вы будете использовать string.format, как показано ниже...
X = string.Format("<a href=\"tel:{0}\" onclick=\"Javascript: goog_report_conversion({1}); return false;\">{0}</a>", displayText, sRegPhone);
нам нужны двойные кавычки для вызова функции и href в привязке, но будут ошибки для использования как показано ниже на сервере в заявлении..
"<a href="tel:{0}""></a>
поэтому, чтобы преодолеть это, мы используем escape-последовательность, которая, в свою очередь, ускоряет (не будет рассматривать) следующий литерал на стороне сервера, но будет генерировать вместе с этим пропущенным литералом в области вывода или на стороне клиента..like ниже
<a onclick="Javascript: goog_report_conversion(2818669180); return false;" href="tel:(281) 866-9180">(281) 866-9180</a>
поэтому в основном он используется для ускорения предстоящего литерала......
на простом английском языке Я могу сказать, что авторы языка должны были использовать некоторые специальные символы для компиляции кода
поэтому, чтобы позволить программистам использовать эти символы, они использовали метод использования "/"
он преобладает почти на всех языках
\
- символ, используемый для выхода из "специальных символов". Что это значит?
Это означает, что парсер делает магические вещи, когда сталкивается с определенными символами. Эти магические вещи - это изменения состояния во время разбора. Изменение состояния - это что-то вроде: теперь вы вводите строковый литерал, теперь вы переходите к следующей строке, теперь вы оставляете константу символа и т.д.
Символ '\' был выбран для подавления магического значения предшествующего персонажа. Таким образом, \
в конце строки будет подавлять его значение, позволяя создавать, например, макросы на нескольких строках в редакторе, но рассматривается как 1 лексем на предварительном процессоре (препроцессор использует новую строку как разделитель).
Если вам предшествует "
с \
, он будет подавлять его значение начала или конца строкового литерала, то же самое с '
.
Было также созвано, что \
, предшествующий не магическому персонажу, будет проигнорирован (вы не можете подавить магию, когда ее нет). Поэтому не стоит писать "\". '
не имеет магического значения внутри строкового литерала, и экранирование просто игнорируется. Вы можете предшествовать любому символу \
в строковом литерале без проблем (кроме цифр курса и x
для восьмеричных, десятичных и шестнадцатеричных символов).