2013-08-20 1 views
1

제목은 아마 개발자 속어 관점에서 매우 정확하지 않습니다, 그러나 이것은 내가 달성하기 위해 노력하고있어입니다 :VB.Net 구조

을 나는 하나 개의 변수와 구조 Z를 x 및 구조체 z의 인스턴스를 만들 때 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 ??? 
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 
    Dim X as String 
End Structure 

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

... 나는 이런 식으로 뭔가를 달성하고자하는 어떻게 든 다른 구조를 만들거나 어딘가에 XTypes를 정의해야합니다.

+0

당신이'List (Of String) '을'z'의 필드로 사용하지 못하게하는 이유는 .NET 네이밍 규칙에 따라 대문자 클래스/구조체 이름을 따라야한다는 것입니다. –

+0

z.x가 1 개의 값만을 취하도록하고, List가 x가 1을 넘는 것을 허용하지 않겠습니까? (소문자 사용은 데모 목적으로 만 사용되었으므로 응용 프로그램 자체에서 규칙을 따를 것입니다.) – Theveloper

+0

단순한 문자열 일 경우 단순히 문자열 필드를 사용하는 것이 어떻습니까? 죄송합니다. 질문이 명확하지 않고 컴파일되지 않고 읽을 수있는 코드가 문제를 이해하는 데 도움이됩니다. 가짜 코드는 종종 자멸합니다. –

답변

1

사용하고자하는 것이 enum이라고 생각합니다. 이 같은 것을 할 수있는 : 당신은 X에 대한 사전 정의 된 값을 만들 수

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 

이 방법을, 그리고 그것은있는 MsgBox는 당신이 선택할 수있는 다른 MsgBoxStyles을 얼마나 유사 할 것입니다.

편집 :

당신은 아마 가장 효과적이지 이런 식으로 뭔가를 (시도 할 수

당신이 X의 문자열 값을 얻기 위해 ToString()를 호출하지 않았다, 그래서 그것을 확인하고 싶었다면,하지만,

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