2013-08-20 39 views
1

標題可能不是從開發人員的角度來看俚語非常準確,但是這就是我想要實現:從預定義的字符串列表變量VB.Net結構

我有一個結構Z,使用一個變量x並創建結構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 

這將是我在哪裏可以指定任何斧頭值最簡單的方法......我要實現的是這樣的:

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

什麼阻止你在'z'中使用'List(Of String)'作爲字段(注意你應該遵循.NET命名約定,所以大寫的類/結構名稱)。 –

+0

我希望z.x只取1個值,列表不允許x取多個值嗎? (並且小寫用法僅用於演示目的,我將在應用程序本身中遵循約定) – Theveloper

+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

+0

我可以分配abc和bcd字符串值嗎?我需要a.X輸出一個字符串。 – Theveloper

+0

是的,你可以使用a.X.ToString(),你將得到一個X的值的字符串。 – davidsbro

+0

有沒有其他的方式,我不必使用ToString來獲取值? – Theveloper