방법: 선택적 매개 변수 제공 여부 확인(Visual Basic)

프로시저에서 선택적 매개 변수를 정의할 경우 호출 코드에서 해당 인수를 제공했는지 여부를 확인해야 할 수 있습니다.

매개 변수 값이 기본값과 같은 것으로 비교된 경우 다음 두 가지 이유 중 하나에 해당할 수 있습니다.

  • 호출 코드에서 프로시저 호출의 인수를 생략했습니다. 또는

  • 호출 코드에서 매개 변수의 기본값과 동일한 값을 인수에 제공했습니다.

프로시저 코드에서는 이러한 두 가지 가능성을 구별할 수 없습니다. 흔히 이것은 중요한 문제가 아니지만 경우에 따라 프로시저는 각 가능성에 대해 다른 조치를 취해야 할 수 있습니다. 사용 가능한 최상의 방법은 매개 변수 값이 될 가능성이 거의 없는 값을 기본값으로 정의하는 것입니다. 이 경우에도 호출 코드가 해당 값을 제공할 수 없다고는 보장할 수 없습니다.

호출 프로그램에서 선택적 인수를 제공했는지 여부를 반드시 확인해야 하는 경우 가장 안전한 방법은 프로시저의 오버로드된 버전을 정의하는 것입니다. 방법: 여러 버전의 프로시저 정의(Visual Basic)프로시저를 오버로드할 때 고려해야 할 사항(Visual Basic)을 참조하십시오.

선택적 매개 변수에 인수가 전달되었는지 확인하려면

  1. 매개 변수 값이 될 가능성이 거의 없는 값을 기본값으로 정의합니다.

  2. 선택적 매개 변수가 참조 형식(예: String)일 경우 Nothing이 그 인수에 예상된 값이 아니면 이 값을 기본값으로 사용할 수 있습니다.

  3. 프로시저 코드에서 매개 변수를 기본값과 비교하고 적절한 조치를 취합니다.

선택적 매개 변수가 있거나 없는 프로시저 오버로드

선택적 매개 변수가 있는 프로시저를 정의하는 또 다른 방법은 오버로드를 사용하는 것입니다. 선택적 매개 변수가 하나인 경우 프로시저의 오버로드된 두 버전을 매개 변수가 허용되는 버전과 매개 변수가 허용되지 않는 버전으로 정의할 수 있습니다. 이러한 방식은 선택적 매개 변수의 개수가 증가할수록 더욱 복잡해지지만 호출 프로그램이 각 선택적 인수를 제공했는지 여부를 확실히 알 수 있다는 장점이 있습니다.

인수의 포함 및 생략을 다루는 다른 버전의 프로시저를 정의하려면

  1. 인수 목록의 매개 변수가 있는 프로시저의 버전 하나를 정의합니다. 매개 변수를 Optional로 정의하지 마십시오.

  2. 매개 변수 없이 프로시저의 또 다른 버전 하나를 정의합니다. 선언은 다른 모든 관점에서 첫 번째 버전의 선언과 동일해야 합니다.

  3. 각 호출에 해당하는 코드를 프로시저의 각 버전에 포함합니다.

예제

다음 프로시저에서는 선택적 매개 변수 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

호출 코드가 인수 목록의 office에 대한 값을 제공하지 않을 경우 Visual Basic은 기본값 "QJZ"를 제공합니다.

선택적 매개 변수가 참조 형식(예: String)일 경우 Nothing(Visual Basic)이 그 인수에 예상된 값이 아니면 이 값을 기본값으로 사용할 수 있습니다.

오버로드를 사용하여 선택적 매개 변수가 전달되었는지 여부를 확인하는 예는 방법: 선택적 매개 변수를 사용하는 프로시저 오버로드(Visual Basic)를 참조하십시오.

참고 항목

작업

방법: 프로시저의 선택적 매개 변수 정의(Visual Basic)

방법: 선택적 매개 변수를 사용하는 프로시저 호출(Visual Basic)

참조

Optional(Visual Basic)

ParamArray(Visual Basic)

개념

프로시저 매개 변수 및 인수(Visual Basic)

값 및 참조로 인수 전달(Visual Basic)

위치 및 이름으로 인수 전달(Visual Basic)

선택적 매개 변수(Visual Basic)

매개 변수 배열(Visual Basic)

프로시저 오버로딩(Visual Basic)