부분 메서드(Visual Basic)
부분 메서드를 사용하면 개발자가 사용자 지정 논리를 코드에 삽입할 수 있습니다. 일반적으로 코드는 디자이너 생성 클래스의 일부입니다. 부분 메서드는 코드 생성기에 의해 생성된 Partial 클래스에 정의되어 있으며 변경된 내용이 있음을 나타내는 알림을 제공합니다. 부분 메서드를 사용하여 개발자는 변경에 따라 사용자 지정 동작을 지정할 수 있습니다.
코드 생성기의 디자이너는 메서드 시그니처 및 메서드에 대한 하나 이상의 호출만 정의합니다. 그런 다음 개발자는 생성된 코드의 동작을 사용자 지정하는 경우 메서드의 구현을 제공할 수 있습니다. 구현이 제공되어 있지 않은 경우 메서드에 의한 호출은 컴파일러에 의해 제거되므로 추가 성능 오버헤드가 발생하지 않습니다.
선언
생성된 코드는 시그니처 줄의 시작 부분에 키워드 Partial을 배치하여 부분 메서드의 정의를 표시합니다.
Partial Private Sub QuantityChanged()
End Sub
정의는 다음 조건을 만족해야 합니다.
메서드는 Function이 아닌 Sub여야 합니다.
메서드의 본문은 비어 있어야 합니다.
액세스 한정자는 Private이어야 합니다.
구현
구현은 주로 부분 메서드의 본문 채우기로 구성됩니다. 구현은 일반적으로 정의와는 별도의 Partial 클래스에 있으며 생성된 코드를 확장하려는 개발자에 의해 작성됩니다.
Private Sub QuantityChanged()
' Code for executing the desired action.
End Sub
앞의 예제는 선언에서 확실히 시그니처가 중복되지만 변형이 가능합니다. 특히 Overloads 또는 Overrides와 같은 다른 한정자를 추가할 수 있습니다. 하나의 Overrides 한정자만 허용됩니다. 메서드 한정자에 대한 자세한 내용은 Sub 문(Visual Basic)을 참조하십시오.
사용할 도구
다른 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