Object Data Type

개체를 참조하는 주소를 보유합니다. 모든 참조 형식(문자열, 배열, 클래스, 인터페이스)을 Object 변수에 할당할 수 있습니다. Object 변수는 모든 값 형식(숫자, Boolean, CharDate, 구조, 열거형)의 데이터를 참조할 수도 있습니다.

설명

Object 데이터 형식은 애플리케이션에서 인식하는 개체 인스턴스를 포함하여 모든 데이터 형식의 데이터를 가리킬 수 있습니다. 컴파일 시간에 변수가 가리킬 수 있는 데이터 형식을 모를 때 Object를 사용합니다.

Object의 기본값은 Nothing(null 참조)입니다.

데이터 형식

모든 데이터 형식의 변수, 상수, 식을 Object 변수에 할당할 수 있습니다. Object 변수가 현재 참조하는 데이터 형식을 확인하려면 System.Type 클래스의 GetTypeCode 메서드를 사용할 수 있습니다. 다음 예제에서는 이것을 보여 줍니다.

Dim myObject As Object
' Suppose myObject has now had something assigned to it.
Dim datTyp As Integer
datTyp = Type.GetTypeCode(myObject.GetType())

Object 데이터 형식은 참조 형식입니다. 그러나 Visual Basic은 값 형식의 데이터를 참조할 때 Object 변수를 값 형식으로 처리합니다.

스토리지

참조하는 데이터 형식이 무엇이든 Object 변수에는 데이터 값 자체가 아니라 값에 대한 포인터가 포함됩니다. 항상 컴퓨터 메모리에 4바이트를 사용하지만 변수 값을 나타내는 데이터에 대한 스토리지는 포함되지 않습니다. 포인터를 사용하여 데이터를 찾는 코드 때문에 값 형식을 보유하는 Object 변수는 명시적으로 형식화된 변수보다 액세스 속도가 약간 느립니다.

프로그래밍 팁

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

  • 성능. Object 형식으로 선언하는 변수는 모든 개체에 대한 참조를 포함할 수 있을 만큼 유연합니다. 그러나 이러한 변수에서 메서드 또는 속성을 호출하는 경우 런타임에 항상 런타임에 지연 바인딩이 발생합니다. 컴파일 시간에 초기 바인딩을 강제 적용하고 성능을 향상시키려면 특정 클래스 이름으로 변수를 선언하거나 특정 데이터 형식으로 캐스팅합니다.

    개체 변수를 선언할 때 일반화된 Object 형식 대신 특정 클래스 형식인 OperatingSystem을 사용하려고 합니다. 또한 해당 속성 및 메서드에 액세스할 수 있도록 사용 가능한 가장 구체적인 클래스(예: Control 대신 TextBox)를 사용해야 합니다. 일반적으로 개체 브라우저에서 클래스 목록을 사용하여 사용 가능한 클래스 이름을 찾을 수 있습니다.

  • 확장. 모든 데이터 형식과 모든 참조 형식은 Object 데이터 형식으로 확장합니다. 즉, System.OverflowException 오류가 발생하지 않고 모든 형식을 Object로 변환할 수 있습니다.

    그러나 값 형식과 Object 간에 변환하는 경우 Visual Basic은 boxingunboxing이라는 작업을 수행하므로 실행 속도가 느려집니다.

  • 형식 문자. Object에는 리터럴 형식 문자 또는 식별자 형식 문자가 없습니다.

  • 프레임워크 형식. .NET Framework에서 해당 형식은 System.Object 클래스입니다.

예시

다음 예제에서는 개체 인스턴스를 가리키는 Object 변수를 보여 줍니다.

Dim objDb As Object
Dim myCollection As New Collection()
' Suppose myCollection has now been populated.
objDb = myCollection.Item(1)

참고 항목