사용자 지정 컨트롤에서 메서드 구현

메서드는 다른 구성 요소에서 구현되는 것과 같은 방식으로 컨트롤에서 구현됩니다.

Visual Basic에서 값을 반환해야 하는 메서드는 Public Function으로 구현됩니다. 값이 반환되지 않는 경우 메서드는 Public Sub로 구현됩니다. 메서드는 다음 구문을 사용하여 선언됩니다.

Public Function ConvertMatterToEnergy(Matter as Integer) As Integer  
   ' Conversion code goes here.  
End Function  

함수는 값을 반환하므로 정수, 문자열, 개체 등의 반환 형식을 지정해야 합니다. Function 또는 Sub 프로시저에서 사용하는 인수도 지정해야 합니다.

C#에서는 Visual Basic에서처럼 함수와 프로시저를 구분하지 않습니다. 메서드는 값이나 void를 반환합니다. C# 공용 메서드를 선언하는 구문은 다음과 같습니다.

public int ConvertMatterToEnergy(int matter)  
{  
   // Conversion code goes here.  
}  

메서드를 선언할 때는 가능하면 항상 모든 인수를 명시적 데이터 형식으로 선언합니다. 개체 참조를 사용하는 인수는 As Widget가 아닌 As Object과 같이 특정 클래스 형식으로 선언해야 합니다. Visual Basic에서 기본 설정인 Option Strict는 이 규칙을 자동으로 적용합니다.

형식이 지정된 인수를 사용하면 런타임이 아닌 컴파일러에서 대부분의 개발자 오류를 찾아낼 수 있습니다. 컴파일러는 항상 오류를 찾아내는 반면 런타임 테스트에서는 테스트 가능한 오류만 찾아낼 수 있습니다.

오버로드된 메서드

컨트롤 사용자가 메서드에 서로 다른 매개 변수 조합을 제공할 수 있도록 하려면 명시적 데이터 형식을 사용하여 메서드의 여러 오버로드를 제공합니다. 모든 데이터 형식을 포함할 수 있는 As Object로 선언된 매개 변수는 만들지 않아야 합니다. 이러한 매개 변수를 만들면 오류가 발생해도 테스트에서 확인되지 않을 수 있습니다.

참고

공용 언어 런타임의 유니버설 데이터 형식은 Object가 아닌 Variant입니다. Variant는 언어에서 제거되었습니다.

예를 들어 가상 Spin 컨트롤의 Widget 메서드에서는 회전 방향과 속도를 직접 지정할 수도 있고 각운동량을 가져올 다른 Widget 개체를 지정할 수도 있습니다.

Overloads Public Sub Spin( _  
   ByVal SpinDirection As SpinDirectionsEnum, _  
   ByVal RevolutionsPerSecond As Double)  
   ' Implementation code here.  
End Sub  
Overloads Public Sub Spin(ByVal Driver As Widget) _  
   ' Implementation code here.  
End Sub  
public void Spin(SpinDirectionsEnum spinDirection, double revolutionsPerSecond)  
{  
   // Implementation code here.  
}  
  
public void Spin(Widget driver)  
{  
   // Implementation code here.  
}  

참조