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

具有预定义字符串列表中的变量的VB.Net结构,.net,vb.net,variables,.net,Vb.net,Variables,从开发人员俚语的角度来看,标题可能不是很准确,但这正是我试图实现的目标: 我有一个带有一个变量x的结构z,在创建结构z的实例时,我希望x被约束到x的类型列表中。。。因此z.x=xType.1或z.x=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 S

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

我有一个带有一个变量x的结构z,在创建结构z的实例时,我希望x被约束到x的类型列表中。。。因此z.x=xType.1或z.x=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
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
Public X as XType
Public Property XString as String
    Get
        Return X.ToString()
    End Get
End Property

因此,我必须以某种方式创建另一个结构或定义这些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
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
Public X as XType
Public Property XString as String
    Get
        Return X.ToString()
    End Get
End Property
通过这种方式,您可以为X创建预定义的值,这与MsgBox具有不同的MsgBoxStyles的方式类似

编辑:

如果您希望这样做,就不必调用ToString()来获取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
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
Public X as XType
Public Property XString as String
    Get
        Return X.ToString()
    End Get
End Property

此链接也可能有帮助:

我认为您可能希望使用的是枚举。你可以这样做:

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
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
Public X as XType
Public Property XString as String
    Get
        Return X.ToString()
    End Get
End Property
通过这种方式,您可以为X创建预定义的值,这与MsgBox具有不同的MsgBoxStyles的方式类似

编辑:

如果您希望这样做,就不必调用ToString()来获取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
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
Public X as XType
Public Property XString as String
    Get
        Return X.ToString()
    End Get
End Property


此链接也可能有帮助:

是什么阻止您在
z
中使用
列表(字符串)
作为字段(请注意,您应该遵循.NET命名约定,因此使用大写类/结构名称)。我希望z.x只取1个值,列表不允许x取多个值吗?(小写的用法只是为了演示,我将遵循应用程序本身的约定)如果它只是一个字符串,为什么不简单地使用字符串字段呢?抱歉,问题不清楚,编译可读代码有助于理解问题。伪代码往往会弄巧成拙。我编辑了原始问题,让您更好地了解我想要什么。。。希望这更有意义。你到底想做什么?这一切的意义是什么?我觉得这是个X-Y问题。为什么需要这样做?是什么阻止您在
z
中使用
列表(字符串)
作为字段(请注意,您应该遵循.NET命名约定,因此使用大写类/结构名称)。我希望z.x只取1个值,列表不允许x取多个值吗?(小写的用法只是为了演示,我将遵循应用程序本身的约定)如果它只是一个字符串,为什么不简单地使用字符串字段呢?抱歉,问题不清楚,编译可读代码有助于理解问题。伪代码往往会弄巧成拙。我编辑了原始问题,让您更好地了解我想要什么。。。希望这更有意义。你到底想做什么?这一切的意义是什么?我觉得这是个X-Y问题。为什么需要这样做?我可以分配abc和bcd字符串值吗?我需要一个.X来输出一个字符串。是的,你只需要使用a.X.ToString()就可以得到一个值为X的字符串。有没有其他方法可以让我不必使用ToString来获得值?@开发者,我编辑了我的答案,并以某种方式让你不必调用
ToString()就可以得到枚举的字符串值
每次你需要它的时候。当然,没问题。很高兴能帮上忙我能分配abc和bcd字符串值吗?我需要一个.X来输出一个字符串。是的,你只需要使用a.X.ToString()就可以得到一个值为X的字符串。有没有其他方法可以让我不必使用ToString来获得值?@开发者,我编辑了我的答案,并以某种方式让你不必调用
ToString()就可以得到枚举的字符串值
每次你需要它的时候。当然,没问题。很高兴这有帮助