如何在VB.NET中使用另一个类的Enum?

时间:2015-10-07 14:49:30

标签: vb.net enums

从不同的班级使用我的Enum值的正确方法是什么?

addClass

它说<< ' VAL_LIST'没有宣布。由于其保护级别,它可能无法访问。'没有宣布。由于其保护级别,它可能无法访问。 >>

2 个答案:

答案 0 :(得分:4)

您需要为枚举提供访问修饰符。默认情况下(如果没有关闭),它是私有的。

Public Class AnotherClass
    'NOTE enum now has an access modifier.
    Public Enum VAL_LIST
        VAL_1
        VAL_2
        VAL_3
    End Enum

    '...
End Class

注意:您应始终使用访问修饰符以避免混淆并减少错误。

附加说明:虽然这个主题多余,但我建议您阅读正确的命名约定,特别是 - 在您的情况下 - with regard to enums。您应该使用Pascal Case为您的枚举及其值命名,例如ValList。此外,我会选择更具描述性的名称。 VAL_LIST并没有真正表明它的用途,当然VAL_1等也没有说明它们的用途。

答案 1 :(得分:3)

类中有一个默认的对象范围,它与类本身的范围无关。

默认情况下,StructuresEnumsPrivate,变量为Public

最佳做法是明确指定Public / Private范围,以便您可以执行以下操作:

Public Class AnotherClass
    Public Enum VAL_LIST
        VAL_1
        VAL_2
        VAL_3
    End Enum
End Class

您现在必须通过类名称

引用Enum
AnotherClass.VAL_LIST.VAL_1

虽然在您的示例中WriteSomething是实例成员,但您需要执行以下操作:

Dim ac As New AnotherClass 
ac.WriteSomething(AnotherClass.VAL_LIST.VAL_1, DateTime.Now.ToString)

另外,请将您的枚举重命名为更有意义的内容,不要使用下划线来遵循最佳做法。

完整的工作示例:

Public Class MainClass
    Private Sub Foo()
        Dim ac As New AnotherClass
        ac.WriteSomething(AnotherClass.ValueList.Value1, DateTime.Now.ToString)
    End Sub
End Class

Public Class AnotherClass
    Public Enum ValueList
        Value1
        Value2
        Value3
    End Enum

    Public Sub WriteSomething(ByVal myVal As ValueList, ByVal myString As String)
        Dim _string As String = "Today is " & myString
    End Sub
End Class