다음을 통해 공유


값 형식과 참조 형식

Visual Basic에는 참조 형식과 값 형식의 두 가지 유형이 있습니다. 참조 형식의 변수에는 데이터(개체)에 대한 참조가 저장되며, 값 형식의 변수에는 해당 데이터가 직접 포함됩니다. 참조 형식에서는 두 가지 변수가 같은 개체를 참조할 수 있으므로 한 변수에 대한 작업이 다른 변수에서 참조하는 개체에 영향을 미칠 수 있습니다. 값 형식을 사용하면 각 변수에 고유한 데이터 복사본이 있으며 한 변수에 대한 작업이 다른 변수에 영향을 줄 수 없습니다(매개 변수의 ByRef 한정자의 경우 제외).

값 형식

데이터 형식은 자체 메모리 할당 내에 데이터를 보유하는 경우 값 형식입니다. 값 형식에는 다음이 포함됩니다.

  • 모든 숫자 데이터 형식

  • Boolean, CharDate

  • 멤버가 참조 형식인 경우에도 모든 구조체

  • 열거형은 기본 형식이 항상 SByte, Short, Integer, Long, Byte, UShort, UInteger 또는 ULong입니다.

모든 구조체는 참조 형식 멤버를 포함하는 경우에도 값 형식입니다. 이러한 이유로 CharInteger 같은 값 형식은 .NET Framework 구조에 의해 구현됩니다.

예약된 키워드(예: Decimal)를 사용하여 값 형식을 선언할 수 있습니다. New 키워드를 사용하여 값 형식을 초기화할 수도 있습니다. 이는 형식에 매개 변수를 사용하는 생성자가 있는 경우에 특히 유용합니다. 이 예제는 제공된 부분에서 새 Decimal 값을 빌드하는 Decimal(Int32, Int32, Int32, Boolean, Byte) 생성자입니다.

참조 형식

참조 형식은 해당 데이터에 대한 참조를 저장합니다. 참조 형식은 다음과 같습니다.

  • String

  • 요소가 값 형식인 경우에도 모든 배열

  • 클래스 형식(예: Form)

  • 대리자

클래스는 참조 형식입니다. 멤버가 값 형식인 경우에도 모든 배열은 참조 형식입니다.

모든 참조 형식은 기본 .NET Framework 클래스를 나타내므로 초기화할 때 New Operator 키워드를 사용해야 합니다. 다음 문은 배열을 초기화합니다.

Dim totals() As Single = New Single(8) {}  

형식이 아닌 요소

선언된 요소의 데이터 형식으로 지정할 수 없으므로 다음 프로그래밍 요소는 형식으로 한정되지 않습니다.

  • 네임스페이스

  • 모듈

  • 이벤트

  • 속성 및 프로시저

  • 변수, 상수 및 필드

개체 데이터 형식 작업

참조 형식 또는 값 형식을 Object 데이터 형식의 변수에 할당할 수 있습니다. Object 변수는 항상 데이터에 대한 참조를 보유하며 데이터 자체는 보유하지 않습니다. 그러나 값 형식을 Object 변수에 할당하면 자체 데이터를 보유하는 것처럼 동작합니다. 자세한 내용은 개체 데이터 형식을 참조하세요.

Microsoft.VisualBasic 네임스페이스의 Information 클래스에 있는 IsReference 메서드에 전달하여 Object 변수가 참조 형식 또는 값 형식으로 작동하고 있는지 확인할 수 있습니다. Information.IsReferenceObject 변수의 내용이 참조 형식을 나타내는 경우 True를 반환합니다.

참고 항목