VB.NET中的枚举-应为语句结尾

VB.NET中的枚举-应为语句结尾,vb.net,enums,Vb.net,Enums,我的这些代码行产生了同样的错误 Enum ConnectionState INTERNET_CONNECTION_MODEM = 0x1 INTERNET_CONNECTION_LAN = 0x2 INTERNET_CONNECTION_PROXY = 0x4 INTERNET_RAS_INSTALLED = 0x10 INTERNET_CONNECTION_OFFLINE = 0x20 INTERNET_

我的这些代码行产生了同样的错误

   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
它说:

预期报表结束

我试着用谷歌搜索,结果显示我的搜索格式是正确的。例如,下面的这些行是有效的

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
两个都是从一个地方拿走的

有人能告诉我我的线路出了什么问题吗


提前感谢。

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 
有人能告诉我我的线路出了什么问题吗

您尚未正确声明十六进制文字

您已经用C#编写了它们(使用
0x
前缀),但是VB.NET希望它们使用
&H
前缀编写,就像示例代码所示

实际上,错误消息可能更有用,但它试图告诉您的是,它无法识别
0x
序列,而是希望找到代码行的末尾

将枚举更改为如下所示:

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
类型。您可能从一些旧的VB6代码中提取了该示例枚举声明,但是考虑到VB.NET中的
整型
类型的扩展范围,您的值溢出的风险很小。

是否将
&
附加到variablenames中以声明它们同样长的时间?或者在值后面附加一个
L
,告诉编译器该值应被视为长值?裁判:@Nicholas:是的。但我所说的仍然是准确的;在您链接的文章中:“文字也可以使用标识符类型字符(%,&,@,!,#,$)”无论出于何种原因,在声明枚举常量时,尤其是来自Win32 API的常量时,
&
后缀无处不在,表示文字值应解释为