부분 메서드(Visual Basic)

부분 메서드를 사용하면 개발자가 코드에 사용자 지정 논리를 삽입할 수 있습니다. 일반적으로 코드는 디자이너가 생성한 클래스의 일부입니다. 부분 메서드는 코드 생성기에서 만든 부분 클래스에서 정의되며, 일반적으로 무엇인가가 변경되었다는 알림을 제공하는 데 사용됩니다. 이를 통해 개발자는 변경에 대한 응답으로 사용자 지정 동작을 지정할 수 있습니다.

코드 생성기의 디자이너는 메서드 시그니처와 메서드에 대한 하나 이상의 호출만 정의합니다. 그런 다음 개발자는 생성된 코드의 동작을 사용자 지정하려는 경우 메서드에 대한 구현을 제공할 수 있습니다. 구현이 제공되지 않으면 메서드에 대한 호출이 컴파일러에 의해 제거되므로 추가 성능 오버헤드가 발생하지 않습니다.

선언

생성된 코드는 서명란의 시작 부분에 키워드 Partial을 배치하여 부분 메서드의 정의를 표시합니다.

Partial Private Sub QuantityChanged()  
End Sub  

정의는 다음 조건을 충족해야 합니다.

  • 메서드는 Function이 아닌 Sub 메서드여야 합니다.

  • 메서드의 본문은 비워 두어야 합니다.

  • 액세스 한정자는 Private이어야 합니다.

구현

구현은 주로 부분 메서드의 본문을 채우는 것으로 구성됩니다. 구현은 일반적으로 정의와 별도의 부분 클래스에 있으며 생성된 코드를 확장하려는 개발자가 작성합니다.

Private Sub QuantityChanged()  
'    Code for executing the desired action.  
End Sub  

이전 예제에서는 선언의 서명을 정확히 복제하지만 변형은 가능합니다. 특히 다른 한정자(예: Overloads 또는 Overrides)를 추가할 수 있습니다. 하나의 Overrides 한정자만 허용됩니다. 메서드 한정자에 대한 자세한 내용은 Sub 문을 참조하세요.

사용할 용어

다른 Sub 프로시저를 호출할 때 부분 메서드를 호출합니다. 메서드가 구현된 경우 인수가 평가되고 메서드 본문이 실행됩니다. 그러나 부분 메서드를 구현하는 것은 선택 사항이라는 점을 기억하세요. 메서드가 구현되지 않은 경우 해당 메서드를 호출해도 효과가 없으며 메서드에 인수로 전달된 식은 평가되지 않습니다.

예시

Product.Designer.vb 파일에서 Quantity 속성이 있는 Product 클래스를 정의합니다.

Partial Class Product

    Private _Quantity As Integer

    Property Quantity() As Integer
        Get
            Return _Quantity
        End Get
        Set(ByVal value As Integer)
            _Quantity = value
            QuantityChanged()
        End Set
    End Property

    ' Provide a signature for the partial method.
    Partial Private Sub QuantityChanged()
    End Sub
End Class

Product.vb 파일에서 QuantityChanged에 대한 구현을 제공합니다.

Partial Class Product

    Private Sub QuantityChanged()
        MsgBox("Quantity was changed to " & Me.Quantity)
    End Sub

End Class

마지막으로 프로젝트의 Main 메서드에서 Product 인스턴스를 선언하고 해당 Quantity 속성에 대한 초기 값을 제공합니다.

Module Module1

    Sub Main()
        Dim product1 As New Product With {.Quantity = 100}
    End Sub

End Module

다음 메시지를 표시하는 메시지 상자가 표시되어야 합니다.

Quantity was changed to 100

참고 항목