Почему [CByte] не разрешен в качестве члена Enum, когда могут использоваться похожие ключевые слова? - PullRequest
1 голос
/ 09 января 2020

Я сделал следующее (опрометчиво) Enum:

Public Enum gtUnaryOperator
    [CBool]
    [CByte]
    [CCur]
    [CDate]
    [CDbl]
    [CDec]
    [CInt]
    [CLng]
    [CLngPtr]
    [CSng]
    [CStr]
    [CVar]
    [CVDate]
    [CVErr]
End Enum

... с именами всех функций преобразования типов, экранированных в [] квадратных скобках. Это прекрасно компилируется, и я могу ссылаться на эти члены перечисления в коде (при условии, что я их избегаю - например, ?[CCur] напечатает 2 в ближайшем окне)

Однако я не могу использовать [CByte] в точно так же - все остальные работают, но ввод ?[CByte] в ближайшем окне дает

Ошибка компиляции, ожидаемая "("

Я пытался Прочитайте спецификацию языка 3.3.5.3 Специальные формы идентификаторов для ответов, но это немного плотно (или, может быть, я), и в любом случае ничего не выскакивает в качестве объяснения.

Примечание: полностью уточняется :

gtUnaryOperator.[CByte]

... работает нормально, но я не понимаю, почему это необходимо


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

enter image description here Так что я действительно в растерянности!

...