Можно ли определить перечисление в С# со значениями, которые являются ключевыми словами?
У меня есть некоторые данные клиента, которые я читаю, и я определил Enum для одного из значений, поэтому я могу использовать Enum.Parse(type, somestring).
Проблема заключается в том, что они просто добавили новое значение: "public". Можно ли определить значение перечисления, которое также является зарезервированным словом?
то есть:.
public enum MyEnum {
SomeVal,
SomeOtherVal,
public,
YouGetTheIdea
}
Если я не думаю, что я буду писать метод анализа.
Ответы
Ответ 1
Вы можете добавить @
к имени переменной. Это позволяет использовать ключевые слова как имена переменных - так @public
.
Смотрите здесь.
Из С# spec:
Префикс "@" позволяет использовать ключевые слова как идентификаторы, что полезно при взаимодействии с другими языками программирования. Символ @на самом деле не является частью идентификатора, поэтому идентификатор можно увидеть на других языках в качестве обычного идентификатора без префикса. Идентификатор с префиксом @называется стенографическим идентификатором. Использование префикса @для идентификаторов, которые не являются ключевыми словами, разрешено, но сильно не рекомендуется в качестве стиля.
Ответ 2
да, префикс имени с помощью @. т.е. @public
Ответ 3
Если вы используете значение public
до public
, оно не будет считаться ключевым словом. Ключевые слова чувствительны к регистру.
Однако, как правило, это плохая идея использовать имена, которые являются ключевыми словами (даже если они отличаются друг от друга), поскольку это может вызвать недоумение или даже тонкие недостатки, если ключевое слово случайно используется вместо идентификатора.
Также возможно использовать @
в определенных контекстах (например, объявления переменных или членов), чтобы использовать зарезервированные слова как не-ключевые слова. Однако это не обычная практика и должно быть только средством крайней защиты, когда вы не можете использовать другое имя.
Итак, в вашем случае вы также можете использовать @public
для использования зарезервированного слова в качестве идентификатора перечисления.
Если вы решили использовать @
, имейте в виду, что этот символ используется только в вашем исходном коде, чтобы отличать идентификатор от зарезервированного слова. Для внешнего мира (и в методах, подобных Enum.Parse()
), имя значения перечисления просто public
.
Ответ 4
На самом деле это не очень хорошая идея. Вместо этого добавьте немного больше информации в перечисление:
PublicAccess и т.д.
Ответ 5
В VB.Net используйте квадратные скобки [...] для определения ключевого слова как идентификатора.
Пример:
Public Sub Test(ByVal [public] As String)
MessageBox.Show("Test string: " & [public])
End Sub
Ответ 6
Для VB.NET выполните следующие действия:
Public Enum MyEnum As Integer
Disabled = 0
[New] = 1
[Public] = 2
Super = 4
[Error] = 5
End Enum