Синтаксис ADO CommandText - PullRequest
       4

Синтаксис ADO CommandText

1 голос
/ 22 июля 2009

Кто-нибудь знает, почему иногда @ используется перед строкой commandText?

оба, кажется, работают нормально.

command.CommandText = @"SELECT id FROM users";

или

command.CommandText = "SELECT id FROM users";

Ответы [ 3 ]

5 голосов
/ 22 июля 2009

Это дословная строковая нотация C #.

Буквально-строковому литералу предшествует начальный @ и все, что следует между кавычками, которые @ будут считаться частью строкового литерала без необходимости побеге.

Пожалуйста, смотрите Строковые литералы :

C # поддерживает две формы строки литералы: обычные строковые литералы и дословные строковые литералы.

Обычный строковый литерал состоит из ноль или более символов, заключенных в двойные кавычки, как в "привет", и может включают обе простые escape-последовательности (например, \ t для символа табуляции) и шестнадцатеричный и Unicode escape последовательности.

Строковый литерал состоит из символ @, сопровождаемый двойная кавычка, ноль или более символы и закрывающая двойная кавычка персонаж. Простой пример @"hello". В дословной строке буквально, символы между разделители интерпретируются дословно, единственное исключение, являющееся цитата-спусковая последовательность. Особенно, простые escape-последовательности и шестнадцатеричный и Unicode escape последовательности не обрабатываются в дословные строковые литералы. Дословно строковый литерал может охватывать несколько линии.

Скорее всего, запрос занимал несколько строк, и тот, кто написал код, хотел поместить его в несколько строк, например:

command.CommandText = @"SELECT id
                       FROM users";

Принимая во внимание, что без буквального строкового литерала вам пришлось бы делать это:

command.CommandText = "SELECT id"
                      + " FROM users";
0 голосов
/ 22 июля 2009

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

new RegEx( @"[\w]+") 

вместо

new RegEx("[\\w]+")

чтобы избежать '\'. Пример работает лучше для более сложных регулярных выражений.

0 голосов
/ 22 июля 2009

& = амперсанд
@ = на (или на уровне)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...