具有预定义字符串列表变量的VB.Net结构

时间:2013-08-20 22:29:07

标签: .net vb.net variables

从开发人员俚语的角度来看,标题可能不是很准确,但这正是我想要实现的目标:

我有一个带有一个变量x的结构z,并且在创建结构z的实例时,我希望x被约束为x的类型列表...所以zx = xType.1或zx = xType.2其中xType 1和2是字符串,x也是字符串。

Dim a As z
a.x = xType.1
Print(a.x)      'outputs "abc" because xType.1 = "abc"

编辑1:

Structure Z
    Dim X as String
End Structure

Sub Main()
    Dim a As Z
    a.X = "abc"
    Print(a.X) 'outputs "abc"
End Sub

这是我可以分配a.X任何值的最简单方法......我希望实现这样的目标:

Structure Z
    Dim X as ???
End Structure

Sub Main()
    Dim a As Z
    a.X = XType.abc
    Print(a.X) 'outputs "abc"
    a.X = XType.Zebra
    Print(a.X) 'outputs "Melons"
End Sub

所以我必须制作另一个结构或以某种方式在某处定义那些XType。

1 个答案:

答案 0 :(得分:1)

我认为你可能想要使用的是枚举。你可以这样做:

Structure Z
    Public Enum XType
        abc
        bcd
    End Enum
    Dim X As XType
End Structure

Sub Main()
    Dim a As Z
    a.X = Z.XType.abc
End Sub

这样你可以为X创建预定义的值,它类似于MsgBox有不同的MsgBoxStyles你可以选择的方式。

编辑:

如果你想让它不需要调用ToString()来获取X的字符串值,你可以尝试这样的东西(可能不是最有效的,但它有效):

Structure Z
    Public Enum XType
        abc
        bcd
    End Enum
    Private Xt As XType
    Public Property X As Object
        Get
            Return Xt.ToString()
        End Get
        Set(ByVal value As Object)
            If value.GetType().Name = "XType" Then Xt = value
        End Set
    End Property
End Structure

或者你可以有两个这样的属性:

Public X as XType
Public Property XString as String
    Get
        Return X.ToString()
    End Get
End Property

此链接也可能有所帮助:http://msdn.microsoft.com/en-us/library/essfb559(v=vs.90).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1