Можно ли определить перечисление в C # со значениями, которые являются ключевыми словами? - PullRequest
14 голосов
/ 16 августа 2010

У меня есть некоторые данные клиента, которые я читаю, и я определил Enum для одного из значений, поэтому я могу использовать Enum.Parse (type, somestring).

Проблема в том, что они просто добавили новое значение: "public". Можно ли определить значение перечисления, которое также является зарезервированным словом?

т.е:.

public enum MyEnum {
    SomeVal,
    SomeOtherVal,
    public,
    YouGetTheIdea
}

Если нет, я думаю, что вместо этого я напишу метод разбора.

Ответы [ 6 ]

25 голосов
/ 16 августа 2010

Вы можете добавить @ к имени переменной.Это позволяет использовать ключевые слова в качестве имен переменных - поэтому @public.

См. здесь .

Из C # spec :

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

8 голосов
/ 16 августа 2010

да, префикс имени с @.т.е. @public

7 голосов
/ 16 августа 2010

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

Однако, как правило, плохая идея использовать имена, являющиеся ключевыми словами (даже если они различаются в зависимости от регистра), поскольку это может вызвать путаницу или даже незначительные дефекты, если ключевое слово случайно используется вместо идентификатора.

Также возможно использовать @ в определенных контекстах (например, объявления переменных или членов), чтобы использовать зарезервированные слова в качестве не-ключевых слов. Однако это не распространенная практика, и она должна использоваться только в крайнем случае, когда вы не можете использовать другое имя.

Так что в вашем случае вы также можете использовать @public, чтобы использовать зарезервированное слово в качестве идентификатора перечисления.

Если вы решили использовать @, имейте в виду, что символ используется только в вашем исходном коде, чтобы отличить идентификатор от зарезервированного слова. Для внешнего мира (и в таких методах, как Enum.Parse()), имя значения перечисления просто public.

0 голосов
/ 31 января 2015

Для VB.NET выполните следующие действия:

Public Enum MyEnum As Integer
    Disabled = 0
    [New] = 1
    [Public] = 2
    Super = 4
    [Error] = 5
End Enum
0 голосов
/ 16 августа 2010

В VB.Net используйте квадратные скобки [...] для обозначения ключевого слова в качестве идентификатора. Пример:

Public Sub Test(ByVal [public] As String)
  MessageBox.Show("Test string: " & [public])
End Sub
0 голосов
/ 16 августа 2010

Хотя это не очень хорошая идея. Вместо этого добавьте немного больше информации в enum:

PublicAccess и т. Д.

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