다음을 통해 공유


Visual Basic 6.0 사용자를 위한 Class_Initialize 변경 사항

업데이트: 2007년 11월

생성자는 개체가 만들어질 때 실행되는 메서드입니다. 생성자는 Visual Basic에 새로 추가된 기능입니다. 생성자는 Visual Basic 6.0의 Class_Initialize 메서드와 New 문의 동작이 결합된 것이며 보다 융통성있고 원활하게 클래스 인스턴스를 만들 수 있습니다. 개체 만들기에 대한 자세한 내용은 개체 만들기 및 사용을 참조하십시오.

Class_Initialize

Visual Basic 6.0

Visual Basic 6.0에서는 Class_Initialize 메서드를 통해 생성자 개념을 지원합니다. 이 메서드는 전용 메서드이므로 매개 변수를 허용하지 않습니다. 클래스의 새 인스턴스가 만들어질 때 이 메서드가 자동으로 호출됩니다. New 키워드를 호출하면 Class_Initialize 메서드가 있는 경우 호출됩니다.

트리의 연간 증가를 기본값인 5년으로 지정하려는 경우에 클래스 코드는 다음과 같습니다.

' Visual Basic 6.0
Private mvarYearlyGrowth As Integer

Public Property Get YearlyGrowth() As Integer
    YearlyGrowth = mvarYearlyGrowth
End Property

Public Property Let YearlyGrowth(ByVal newValue As Integer)
    mvarYearlyGrowth = newValue
End Property

Private Sub Class_Initialize()
    mvarHeight = 5
End Sub

트리를 만들고 해당 속성을 설정하는 코드는 다음과 같습니다.

Dim growingTree As New Tree
growingTree.YearlyGrowth = 10

Visual Basic 2008

Visual Basic 2008에서는 New 키워드를 통해 생성자를 지원합니다. 이런 경우 YearlyGrowth 속성을 설정하는 추가 코드는 필요하지 않습니다. New 키워드를 호출하면 클래스의 오버로드된 New 메서드 중 하나가 호출됩니다. 클래스에 New 메서드가 없는 경우에는 컴파일러에서 매개 변수 없는 메서드를 만듭니다.

Option Strict On
Public Class Tree
  Private yearlyGrowthValue As Integer = 5

  Public Property YearlyGrowth() As Integer
      Get
          Return yearlyGrowthValue
      End Get
      Set(ByVal Value As Integer)
          yearlyGrowthValue = Value
      End Set
  End Property


  Public Sub New(ByVal newYearlyGrowth As Integer)
      Me.YearlyGrowth = newYearlyGrowth
  End Sub
End Class

트리를 만들고 해당 속성을 설정하는 코드는 다음과 같습니다.

Dim growingTree As New Tree(10)

이 예제에서는 연간 증가를 지정하지 않고 Tree를 만들 수 없습니다. 그렇게 할 수 있도록 허용하려면 매개 변수가 없는 클래스에 다른 New 메서드를 추가합니다. 이를 생성자 오버로드 작업이라고 합니다.

New 키워드

Visual Basic 6.0

Visual Basic 6.0에서는 이 코드 줄을 사용하지 않는 것이 좋습니다.

Dim growingTree As New Tree

이는 growingTree 변수에 액세스할 때마다 컴파일러에서 값이 Nothing인지 여부를 확인하고 Nothing인 경우에는 새 인스턴스를 만들어 growingTree에 할당하기 때문입니다. 이는 비효율적일 뿐만 아니라 프로그래밍 오류를 발생시킵니다.

Visual Basic 2008

Visual Basic 2008에서는 인스턴스가 확인되지 않으므로 새 인스턴스가 만들어지지 않습니다. 새 인스턴스를 만들려면 New 또는 As New 키워드를 사용하여 코드 줄을 실행해야만 합니다. 실제로 위의 코드 줄은 최신 버전에서 새 인스턴스를 만들 때 권장되는 방법입니다.

업그레이드 제안 사항

업그레이드 마법사에서는 Class_Initialize 메서드를 다음으로 업그레이드합니다.

'UPGRADE_NOTE: Class_Initialize was upgraded to Class_Initialize_Renamed. Click for more: ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="vbup1061"'

Private mvarHeight As Short
Private Sub Class_Initialize_Renamed()
    mvarHeight = 0
End Sub

Public Sub New()
    MyBase.New()
    Class_Initialize_Renamed()
End Sub

Class_Initialize_Renamed에 대한 호출을 제거하고 코드를 생성자로 직접 이동할 수 있습니다. 이렇게 하면 프로시저에 대한 불필요한 호출이 제거되므로 코드를 읽기가 더 쉬워집니다. New를 호출할 때마다 특정 속성 그룹이 설정되는 경우에는 해당 속성을 설정하는 생성자를 추가하는 것이 좋습니다. Visual Basic 6.0 코드는 Visual Basic 2008에서 다음 코드로 대체할 수 있습니다.

Public Sub New(ByVal newYearlyGrowth As Integer)
    Me.YearlyGrowth = newYearlyGrowth
End Sub

참고 항목

작업

방법: New 키워드 사용

기타 리소스

개체 만들기 및 사용