사용자 정의 데이터 형식

사용자가 정의한 형식으로 데이터를 보유합니다. Structure 문은 형식을 정의합니다.

이전 버전의 Visual Basic은 UDT(사용자 정의 형식)를 지원합니다. 현재 버전은 UDT를 구조체로 확장합니다. 구조체는 다양한 데이터 형식의 하나 이상의 멤버를 연결한 것입니다. Visual Basic은 구조체를 단일 단위로 처리하지만 해당 멤버에 개별적으로 액세스할 수도 있습니다.

설명

다양한 데이터 형식을 단일 단위로 결합해야 하거나 기본 데이터 형식 중 어느 것도 요구 사항을 충족하지 못하는 경우 구조체 데이터 형식을 정의하고 사용합니다.

구조체 데이터 형식의 기본값은 각 멤버의 기본값 조합으로 구성됩니다.

선언 형식

구조체 선언은 Structure 문으로 시작하고 End Structure 문으로 끝납니다. Structure 문은 구조체가 정의하는 데이터 형식의 식별자이기도 한 구조체의 이름을 제공합니다. 코드의 다른 부분에서는 이 식별자를 사용하여 변수, 매개 변수, 함수 반환 값을 이 구조체의 데이터 형식으로 선언할 수 있습니다.

Structure 문과 End Structure 문 사이의 선언은 구조체의 멤버를 정의합니다.

멤버 액세스 수준

Dim 문 또는 Public, Friend 또는 Private과 같은 액세스 수준을 지정하는 문을 사용하여 모든 멤버를 선언해야 합니다. Dim 문을 사용하는 경우 액세스 수준은 기본적으로 Public으로 설정됩니다.

프로그래밍 팁

  • 메모리 사용 모든 복합 데이터 형식과 마찬가지로 멤버의 명목상 스토리지 할당을 함께 추가하여 구조체의 총 메모리 사용량을 안전하게 계산할 수 없습니다. 또한 메모리의 스토리지 순서가 선언 순서와 동일하다고 해서 안전하게 가정할 수는 없습니다. 구조체의 스토리지 레이아웃을 제어해야 하는 경우 StructLayoutAttribute 특성을 Structure 문에 적용할 수 있습니다.

  • Interop 고려 사항 자동화 개체나 COM 개체와 같이 .NET Framework용으로 작성되지 않은 구성 요소를 조작하는 경우 다른 환경의 사용자 정의 형식이 Visual Basic 구조체 형식과 호환되지 않는 것에 유의하세요.

  • 확대 구조체 데이터 형식 간 자동 변환은 없습니다. 연산자 문을 사용하여 구조체에서 변환 연산자를 정의할 수 있으며 각 변환 연산자를 Widening 또는 Narrowing으로 선언할 수 있습니다.

  • 형식 문자 구조체 데이터 형식에는 리터럴 형식 문자 또는 식별자 형식 문자가 없습니다.

  • Framework 형식 .NET Framework에는 해당 형식이 없습니다. 모든 구조체는 .NET Framework 클래스 System.ValueType에서 상속되지만 System.ValueType에 해당되는 개별 구조는 없습니다.

예시

다음 패러다임은 구조체 선언의 개요를 보여 줍니다.

[Public | Protected | Friend | Protected Friend | Private] Structure structname
    {Dim | Public | Friend | Private} member1 As datatype1
    ' ...
    {Dim | Public | Friend | Private} memberN As datatypeN
End Structure

참고 항목