다음을 통해 공유


User-Defined 데이터 형식

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

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

비고

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

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

선언 형식

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

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

멤버 액세스 수준

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

프로그래밍 팁

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

  • Interop 고려 사항. .NET Framework용으로 작성되지 않은 구성 요소(예: Automation 또는 COM 개체)와 상호 작용하는 경우 다른 환경의 사용자 정의 형식은 Visual Basic 구조체 형식과 호환되지 않습니다.

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

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

  • 프레임워크 형식. .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

참고하십시오