2012-02-14 101 views
-1

这些矿井的代码行产生相同的错误枚举在VB.NET - 声明预计年底

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 

无论从MSDN拍摄。

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

提前致谢。

回答

4

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

有人能告诉我什么是错的我的台词?

您还没有正确声明十六进制文字。

你已经用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 

在问题中显示的示例代码后缀还带有各自的&字符的文字的。那是a holdover from the days of BASIC gone by;它告诉编译器该文字代表一个Long类型。您可能从一些旧的VB 6代码中抽取了样本枚举声明,但是由于VB.NET中的Integer类型的扩展范围,您的值溢出的风险很小。

+0

是不是'&'追加到变量名称来声明它们为长?或者在该值附加一个“L”来告诉编译器该值应该被视为Long?参考:[类型字符(Visual Basic)](http://msdn.microsoft.com/en-us/library/s9cz43ek(v = VS.100).aspx) – Nicholas 2012-02-14 12:17:52

+0

@尼古拉斯:是的。但我所说的仍然是准确的;从你链接的文章:*“文字也可以使用标识符类型字符(%,&,@,!,#,$)”*无论什么原因,当声明枚举常量,特别是来自Win32 API的那些常量时,后缀无处不在,表明文字值应该被解释为“长”。 – 2012-02-14 20:46:54