Перечисление в VB.NET - ожидается конец оператора - PullRequest
0 голосов
/ 14 февраля 2012

Эти строки моего кода выдают одну и ту же ошибку

   Enum ConnectionState
       INTERNET_CONNECTION_MODEM = 0x1
       INTERNET_CONNECTION_LAN = 0x2
       INTERNET_CONNECTION_PROXY = 0x4
       INTERNET_RAS_INSTALLED = 0x10
       INTERNET_CONNECTION_OFFLINE = 0x20
       INTERNET_CONNECTION_CONFIGURED = 0x40
    End Enum

Там написано:

Ожидается конец оператора

Я пытался сделатьПоиск в Google, и кажется, что я следую правильному формату.Например, эти строки ниже действительны.

Public Enum InterfaceColors
    MistyRose = &HE1E4FF&
    SlateGray = &H908070&
    DodgerBlue = &HFF901E&
    DeepSkyBlue = &HFFBF00&
    SpringGreen = &H7FFF00&
    ForestGreen = &H228B22&
    Goldenrod = &H20A5DA&
    Firebrick = &H2222B2&
End Enum

Они тоже работают

Enum SecurityLevel
    IllegalEntry = -1
    MinimumSecurity = 0
    MaximumSecurity = 1
End Enum

Обе были взяты из MSDN .

Может кто-тоПосоветуйте, что не так с моими строками?

Спасибо заранее.

Ответы [ 2 ]

5 голосов
/ 14 февраля 2012

VB не понимает 0x обозначение. VB использует &H вместо.

Enum ConnectionState 
    INTERNET_CONNECTION_MODEM = &H1 
    INTERNET_CONNECTION_LAN = &H2 
    INTERNET_CONNECTION_PROXY = &H4 
    INTERNET_RAS_INSTALLED = &H10 
    INTERNET_CONNECTION_OFFLINE = &H20 
    INTERNET_CONNECTION_CONFIGURED = &H40 
End Enum 
1 голос
/ 14 февраля 2012

Может кто-нибудь посоветовать мне, что не так с моими строками?

Вы не правильно объявили шестнадцатеричные литералы.

Вы написали их так же, как в C # (с префиксом 0x), но VB.NET ожидает, что они будут написаны с префиксом &H, как показано в примере кода.

Действительно, сообщение об ошибке, возможно, может быть более полезным, но он пытается сказать вам, что он не распознает последовательность 0x и вместо этого ожидает найти конец строки кода.

Измените свой enum, чтобы он выглядел так:

Enum ConnectionState
   INTERNET_CONNECTION_MODEM = &H1
   INTERNET_CONNECTION_LAN = &H2
   INTERNET_CONNECTION_PROXY = &H4
   INTERNET_RAS_INSTALLED = &H10
   INTERNET_CONNECTION_OFFLINE = &H20
   INTERNET_CONNECTION_CONFIGURED = &H40
End Enum

Пример кода, показанный в вопросе, также суффикс каждого из литералов с символом &. Это пережиток тех дней Бейсика, которые прошли ; он сообщает компилятору, что литерал представляет тип Long. Вы, вероятно, извлекли это примерное перечисление из некоторого старого кода VB 6, но существует небольшой риск переполнения ваших значений, учитывая расширенный диапазон типа Integer в VB.NET.

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