2013-03-26 7 views
8

Я не могу найти «по» в списках зарезервированных ключевых слов в C#, но подключаемый модуль Resharper Visual Studio, по-видимому, считает его одним - он добавляет его при удалении @ при генерации кода (например, путем выполнения команды рефакторинга)Является ли зарезервированное ключевое слово?

ответ

14

by является Query Keyword, то есть, это ключевое слово только в определенных позициях в LINQ Query Expressions, в частности, только в пределах group clause.

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

+0

Интересно, почему 'by' не упоминается как _contextual keyword_ на странице [Ключевые слова C# (MSDN)] (http://msdn.microsoft.com/en-us/library/x53a06bb.aspx), когда, например, слова 'select',' group', 'orderby' и' descending' находятся в этом списке? –

+0

MSDN группирует все ключевые слова в категории ([Ключевые слова для календаря] (http://msdn.microsoft.com/en-us/library/xt4z8b0f.aspx), [Ключевые слова пространства имен] (http://msdn.microsoft.com/ru -us/library/cxtk6h5e.aspx) и т. д.). Хотя 'by' * является * контекстным ключевым словом, кажется, что пользователи MSDN считают, что группировка всех [Query Keywords] (http://msdn.microsoft.com/en-us/library/bb310804.aspx) в категорию, отдельную от [Контекстные ключевые слова] (http://msdn.microsoft.com/en-us/library/the35c6y.aspx) улучшает удобство использования документации. Я не уверен, почему на странице обзора ключевых слов не перечислены все ключевые слова запроса. – dtb

+0

Спецификация языка C# имеет следующее: выражения _Query содержат ряд «контекстных ключевых слов», то есть идентификаторы, которые имеют особый смысл в данном контексте. В частности, это 'from',' where', 'join',' on', 'equals',' to', 'let',' orderby', 'asccending',' descending', 'select',' group' и 'by'. Чтобы избежать двусмысленности в выражениях запросов, вызванных смешанным использованием этих идентификаторов в качестве ключевых слов или простых имен, эти идентификаторы считаются ключевыми словами, когда они встречаются в любом месте выражения запроса. [...] _ –

4

by не зарезервированное слово это query word для использования LINQ:

Например:

  (from x in Collection 
     group x by n); 

Вы можете избежать любого C# reserved слова, используя @ символ перед ним.

Смежные вопросы