Имеет ли префикс @ для делегатов какое-то особое значение? - PullRequest
10 голосов
/ 07 апреля 2009

Несколько раз я видел, как ReSharper генерирует код, который выглядит так:

delegate void myHandler(int i);
myHandler myHandlerContainer;
...
foreach (Delegate @delegate in myHandlerContainer.GetInvocationList())
{...}

Придает ли ' @ ' в @ делегат этой переменной какое-либо особое семантическое значение?
Или это просто соглашение, с которым я раньше не сталкивался?

Ответы [ 2 ]

15 голосов
/ 07 апреля 2009

Некоторые подробности из MSDN:

Префикс "@" позволяет использовать ключевые слова в качестве идентификаторов, который является полезно при взаимодействии с другими языки программирования. Характер @ на самом деле не является частью идентификатор, поэтому идентификатор может быть рассматривается на других языках как нормальный идентификатор, без префикса. Идентификатор с префиксом @ называется дословный идентификатор. Использование @ префикс для идентификаторов, которые не являются ключевые слова разрешены, но строго обескуражен как вопрос стиля.

из C # Спецификация языка: 2.4.2 Идентификаторы .

Префикс «@» позволяет, например, наследовать от класса с именем «делегат», который может быть определен в библиотеке, написанной на другом языке, отличном от C #.

В любом другом случае я бы не рекомендовал использовать этот синтаксис и вместо этого составлять идентификаторы, отличные от ключевых слов C # (например, значение вместо значения), чтобы повысить удобочитаемость кода и избежать путаницы в том, что к нему прилагается какое-либо особое значение.

Существует также еще один интересный факт, касающийся именования переменных:

Идентификаторы, содержащие два последовательных символы подчеркивания (U + 005F) зарезервировано для использования реализация. Например, реализация может обеспечить расширенный ключевые слова, которые начинаются с двух подчеркивания.

12 голосов
/ 07 апреля 2009

«@delegate» должен отличать имя переменной от ключевого слова «делегат».

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