다음을 통해 공유


선택적 매개 변수(Visual Basic)

프로시저 매개 변수가 선택 사항이며 프로시저가 호출될 때 인수를 제공할 필요가 없도록 지정할 수 있습니다. 선택적 매개 변수 는 프로시저 정의의 Optional 키워드로 표시됩니다. 다음 규칙이 적용됩니다.

  • 프로시저 정의의 모든 선택적 매개 변수는 기본값을 지정해야 합니다.

  • 선택적 매개 변수의 기본값은 상수 식이어야 합니다.

  • 프로시저 정의에서 선택적 매개 변수를 따르는 모든 매개 변수도 선택 사항이어야 합니다.

다음 구문은 선택적 매개 변수가 있는 프로시저 선언을 보여 주는 구문입니다.

Sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)  

선택적 매개 변수를 사용하여 프로시저 호출

선택적 매개 변수를 사용하여 프로시저를 호출할 때 인수를 제공할지 여부를 선택할 수 있습니다. 그렇지 않은 경우 프로시저는 해당 매개 변수에 대해 선언된 기본값을 사용합니다.

인수 목록에서 하나 이상의 선택적 인수를 생략하면 연속 쉼표를 사용하여 해당 위치를 표시합니다. 다음 예제 호출은 첫 번째 및 네 번째 인수를 제공하지만 두 번째 또는 세 번째 인수는 제공하지 않습니다.

Sub name(argument 1, , , argument 4)  

다음 예제에서는 함수를 여러 차례 호출합니다 MsgBox . MsgBox 에는 하나의 필수 매개 변수와 두 개의 선택적 매개 변수가 있습니다.

첫 번째 MsgBox 호출은 MsgBox이 정의한 순서대로 모든 세 가지 인수를 제공합니다. 두 번째 호출은 필요한 인수만 제공합니다. 세 번째 및 네 번째 호출은 첫 번째 및 세 번째 인수를 제공합니다. 세 번째 호출은 위치별로 이 작업을 수행하고 네 번째 호출은 이름으로 수행합니다.

MsgBox("Important message", MsgBoxStyle.Critical, "MsgBox Example")
MsgBox("Just display this message.")
MsgBox("Test message", , "Title bar text")
MsgBox(Title:="Title bar text", Prompt:="Test message")

선택적 인수가 있는지 여부 확인

프로시저는 런타임에 지정된 인수를 생략했는지 또는 호출 코드가 기본값을 명시적으로 제공했는지 여부를 검색할 수 없습니다. 이러한 구분을 수행해야 하는 경우 예상치 못한 값을 기본값으로 설정할 수 있습니다. 다음 절차에서는 선택적 매개 변수 office를 정의하고 기본값 QJZ을 테스트하여 호출에서 생략되었는지 확인합니다.

Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
    If office = "QJZ" Then
        Debug.WriteLine("office not supplied -- using Headquarters")
        office = "Headquarters"
    End If
    ' Insert code to notify headquarters or specified office.
End Sub

선택적 매개 변수가 a와 같은 String참조 형식인 경우 인수에 대한 예상 값이 아닌 경우 기본값으로 사용할 Nothing 수 있습니다.

선택적 매개 변수 및 오버로드

선택적 매개 변수를 사용하여 프로시저를 정의하는 또 다른 방법은 오버로드를 사용하는 것입니다. 선택적 매개 변수가 하나 있는 경우 프로시저의 오버로드된 두 버전을 정의할 수 있습니다. 하나는 매개 변수를 수락하고 다른 하나는 매개 변수를 허용하지 않습니다. 이 방법은 선택적 매개 변수 수가 증가함에 따라 더 복잡해집니다. 그러나 이점은 호출 프로그램이 각 선택적 인수를 제공했는지 여부를 절대적으로 확신할 수 있다는 것입니다.

참고하십시오