从开发人员俚语的角度来看,标题可能不是很准确,但这正是我想要实现的目标:
我有一个带有一个变量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。
答案 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