1

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

我有一个带有一个变量 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

这将是我可以为 aX 分配任何值的最简单方法......我想实现这样的目标:

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。

4

1 回答 1

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

于 2013-08-20T23:22:53.443 回答