Целесообразно ли когда-либо избегать ключевых слов, например, @учебный класс - PullRequest
2 голосов
/ 20 июня 2011

В c # вы можете создавать переменные с одинаковым именем для ключевого слова, используя @languagekeyword.

Мой вопрос: когда это будет полезно?Когда преимущества перевесят недостатки?

Ответы [ 5 ]

6 голосов
/ 20 июня 2011

CLR может быть ориентирована на множество разных языков программирования. Идентификатор одного языка - это ключевое слово другого языка. Было бы плохо, если бы библиотеку классов, написанную на одном языке, нельзя было использовать на другом языке, потому что объявленный метод или свойство имеет имя, являющееся ключевым словом в этом языке.

6 голосов
/ 20 июня 2011

Простой пример использования этого синтаксиса может быть в веб-приложении, где вам может потребоваться установить некоторые атрибуты для тега HTML, указав объект типа

new { @class = "cssClass" }

Это было бы невозможно без этого синтаксиса.

3 голосов
/ 20 июня 2011

Это наиболее полезно, если вы пишете структуру генерации кода, и ваша базовая модель (например, БД) может содержать доменные объекты, которые используют ключевые слова, например таблица БД или поле с именем «событие». В этом случае вы можете избежать всех имен и столкновений не будет. Это обеспечивает совместимость генератора кода при добавлении новых ключевых слов.

1 голос
/ 20 июня 2011

В целом:

Когда вы выбираете свои собственные имена, старайтесь избегать этого.

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

0 голосов
/ 20 июня 2011

Не рекомендуется использовать имена переменных, которые конфликтуют с зарезервированным ключевым словом, но иногда вы можете не следовать этому правилу для удобства чтения.

Например:

        var duplicates = from item in Items
                         group item by item.Name into @group
                         where @group.Count() > 1
                         select @group;

Это как бы подчеркиваетважная часть кода.

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

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