【发布时间】:2022-07-07 18:39:06
【问题描述】:
我一直在阅读“枚举是一种数据类型”的声明(例如参见here)。我试图更好地理解该语句的含义。于是我写了如下代码。
Imports System
Imports System.Enum
Module Program
Enum colours As Byte
Red = 5
Blue
Green
End Enum
Sub Main(args As String())
Dim c As colours
Console.WriteLine(c.Red) 'Prints 5
Console.ReadLine()
End Sub
End Module
因为枚举已被声明为 BYTE 类型,这意味着与枚举字段关联的常量的类型将是字节类型。但这并不能真正解释枚举作为数据类型的想法。所以我尝试定义一个colours 类型的变量,并尝试通过Dim c As colours 和c.Red 访问枚举成员,它成功了。然而,此时出现了两个问题:
-
c.Red给出警告消息Access of a shared member, enum member or nested type through an instance; qualifying expression will not be evaluated。我理解警告信息中的第一句话,但不理解第二句话。在这种情况下,不应评估的限定表达式是什么——c.Red可以正常工作?? -
虽然我可以通过变量
c访问枚举成员,但这似乎没有必要,因为同样的事情可以通过写colours.red来完成。因此,尽管Dim c as colours声明使枚举看起来更像是一种数据类型,但它似乎并没有多大用处。如果这是正确的,有人可以给我一个例子,以更现实的方式说明枚举作为数据类型的想法。
【问题讨论】:
-
摆脱
Imports System.Enum。这对你没有任何作用。 -
@John 谢谢。注意到。
标签: vb.net