개체 변수 선언(Visual Basic)Object Variable Declaration (Visual Basic)

개체 변수를 선언 하는 일반적인 선언문을 사용 합니다.You use a normal declaration statement to declare an object variable. 지정 데이터 형식에 대 한 Object (즉, 합니다 Object Data Type) 또는 보다 구체적인 클래스는 개체를 만들려는 합니다.For the data type, you specify either Object (that is, the Object Data Type) or a more specific class from which the object is to be created.

변수를 선언 Object 으로 선언 하는 것과 같습니다 System.Object합니다.Declaring a variable as Object is the same as declaring it as System.Object.

특정 개체 클래스를 사용 하 여 변수를 선언 하면 모든 메서드 및 해당 클래스와 상속 된 클래스에 의해 노출 되는 속성 액세스할 수 있습니다.When you declare a variable with a specific object class, it can access all the methods and properties exposed by that class and the classes from which it inherits. 사용 하 여 변수를 선언 하는 경우 Object의 구성원만 액세스할 수 있습니다 합니다 Object 클래스를 설정 하지 않으면 Option Strict Off 런타임에 바인딩을 허용 합니다.If you declare the variable with Object, it can access only the members of the Object class, unless you turn Option Strict Off to allow late binding.

선언 구문Declaration Syntax

개체 변수 선언 하려면 다음 구문을 사용 합니다.Use the following syntax to declare an object variable:

Dim variablename As [New] { objectclass | Object }  

지정할 수도 있습니다 공용, Protected, Friend, Protected Friend개인, 공유, 또는 정적 선언에서 합니다.You can also specify Public, Protected, Friend, Protected Friend, Private, Shared, or Static in the declaration. 다음 예제에서는 선언을 사용할 수 있습니다.The following example declarations are valid:

Private objA As Object  
Static objB As System.Windows.Forms.Label  
Dim objC As System.OperatingSystem  

초기 바인딩 및 런타임에 바인딩Late Binding and Early Binding

경우에 따라 특정 클래스 알려지지 않은 코드가 실행 될 때까지 합니다.Sometimes the specific class is unknown until your code runs. 개체 변수를 선언 해야이 경우에 Object 데이터 형식입니다.In this case, you must declare the object variable with the Object data type. 모든 유형의 개체에 대 한 일반 참조를 만들고 특정 클래스는 런타임에 할당 됩니다.This creates a general reference to any type of object, and the specific class is assigned at run time. 이 이라고 런타임에 바인딩합니다.This is called late binding. 런타임에 바인딩 추가 실행 시간이 필요 합니다.Late binding requires additional execution time. 또한 코드를 가장 최근에 할당 된 클래스의 속성과 메서드를 제한 합니다.It also limits your code to the methods and properties of the class you have most recently assigned to it. 이 코드를 다른 클래스의 멤버에 액세스 하려고 합니다. 런타임 오류가 발생할 수 있습니다.This can cause run-time errors if your code attempts to access members of a different class.

컴파일 시간에 특정 클래스를 알고 있는 경우 해당 클래스의 개체 변수를 선언 해야 합니다.When you know the specific class at compile time, you should declare the object variable to be of that class. 이것을 초기 바인딩이라고 합니다.This is called early binding. 초기 바인딩 성능을 개선 하 고 모든 메서드 및 특정 클래스의 속성에 대 한 코드 액세스를 보장 합니다.Early binding improves performance and guarantees your code access to all the methods and properties of the specific class. 변수 경우 이전 예제에서는 선언에 objA 클래스의 개체에만 사용 하 여 System.Windows.Forms.Label를 지정 해야 As System.Windows.Forms.Label 를 선언 합니다.In the preceding example declarations, if variable objA uses only objects of class System.Windows.Forms.Label, you should specify As System.Windows.Forms.Label in its declaration.

초기 바인딩의 장점Advantages of Early Binding

특정 클래스로 개체 변수를 선언 하면 여러 이점이 있습니다.Declaring an object variable as a specific class gives you several advantages:

  • 자동 형식 검사Automatic type checking

  • 특정 클래스의 모든 멤버에 대 한 액세스 보장Guaranteed access to all members of the specific class

  • 코드 편집기에서 Microsoft IntelliSense 지원Microsoft IntelliSense support in the Code Editor

  • 코드의 가독성 향상된Improved readability of your code

  • 코드에서 오류를 줄일 수Fewer errors in your code

  • 에 전달 된 오류 컴파일 시간 대신 런타임에Errors caught at compile time rather than run time

  • 빠른 코드 실행Faster code execution

개체 변수 멤버에 대 한 액세스Access to Object Variable Members

Option Strict 꺼져 On, 메서드 및 속성 선언 된 클래스의 개체 변수에 액세스할 수 있습니다.When Option Strict is turned On, an object variable can access only the methods and properties of the class with which you declare it. 다음은 이에 대한 예입니다.The following example illustrates this.

' Option statements must precede all other source file lines.  
Option Strict On  
' Imports statement must precede all declarations in the source file.  
Imports System.Windows.Forms  
Public Sub accessMembers()  
    Dim p As Object  
    Dim q As System.Windows.Forms.Label  
    p = New System.Windows.Forms.Label  
    q = New System.Windows.Forms.Label  
    Dim j, k As Integer  
    ' The following statement generates a compiler ERROR.  
    j = p.Left  
    ' The following statement retrieves the left edge of the label in pixels.  
    k = q.Left  
End Sub  

이 예제에서 pObject 클래스 자체의 멤버만 사용할 수 있으므로 Left 속성을 포함하지 않습니다.In this example, p can use only the members of the Object class itself, which do not include the Left property. 반면, q 형식으로 선언된 LabelLabel 네임스페이스에 있는 System.Windows.Forms 클래스의 모든 메서드와 속성을 사용할 수 있습니다.On the other hand, q was declared to be of type Label, so it can use all the methods and properties of the Label class in the System.Windows.Forms namespace.

개체 변수의 유연성Flexibility of Object Variables

상속 계층 구조의 개체를 사용할 때는 다양 한 개체 변수를 선언 하는 데 사용 하는 클래스를 해야 합니다.When working with objects in an inheritance hierarchy, you have a choice of which class to use for declaring your object variables. 이 선택 하는 경우 클래스의 멤버에 대 한 액세스에 대 한 개체 할당의 유연 하 게를 고려해 야 합니다.In making this choice, you must balance flexibility of object assignment against access to members of a class. 예를 들어을 발생 시키는 상속 계층 구조는 System.Windows.Forms.Form 클래스:For example, consider the inheritance hierarchy that leads to the System.Windows.Forms.Form class:

Object

  MarshalByRefObject

    Component

      Control

        ScrollableControl

          ContainerControl

            Form

응용 프로그램 폼 클래스를 정의 하는 가정 specialForm, 클래스에서 상속 하는 Form합니다.Suppose your application defines a form class called specialForm, which inherits from class Form. 특히 참조 하는 개체 변수를 선언할 수 있습니다 specialForm다음 예제와 같이 합니다.You can declare an object variable that refers specifically to specialForm, as the following example shows.

Public Class specialForm  
    Inherits System.Windows.Forms.Form  
    ' Insert code defining methods and properties of specialForm.  
End Class  
Dim nextForm As New specialForm  

앞의 예제에서 선언과 변수를 제한 nextForm 클래스의 개체에 specialForm, 되지만 모든 메서드 및 속성을 specialFormnextForm는 모든 클래스의 모든 멤버 뿐 아니라 specialForm 상속 합니다.The declaration in the preceding example limits the variable nextForm to objects of class specialForm, but it also makes all the methods and properties of specialForm available to nextForm, as well as all the members of all the classes from which specialForm inherits.

형식으로 선언 하 여 보다 일반적인 개체 변수를 만들 수 있습니다 Form다음 예제와 같이 합니다.You can make an object variable more general by declaring it to be of type Form, as the following example shows.

Dim anyForm As System.Windows.Forms.Form  

앞의 예제에서 선언과 사용 하면 응용 프로그램의 어떠한 부분도 할당 anyForm합니다.The declaration in the preceding example lets you assign any form in your application to anyForm. 그러나 있지만 anyForm 클래스의 모든 멤버에 액세스할 수 있습니다 Form에서 추가 메서드 또는 같은 특정 폼에 정의 된 속성 중 하나를 사용할 수 없습니다 specialForm합니다.However, although anyForm can access all the members of class Form, it cannot use any of the additional methods or properties defined for specific forms such as specialForm.

기본 클래스의 모든 멤버는 파생된 클래스를 사용할 수 있지만 파생된 클래스의 추가 멤버는 기본 클래스를 사용할 수 없습니다.All the members of a base class are available to derived classes, but the additional members of a derived class are unavailable to the base class.

참고자료See also