다음을 통해 공유


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

프로시저에 하나 이상의 선택적 매개 변수가 있는 경우 암시적 오버로드와 일치하는 오버로드된 버전을 정의할 수 없습니다. 자세한 내용은 오버로드 프로시저의 고려 사항에서 "선택적 매개 변수에 대한 암시적 오버로드"를 참조하세요.

하나의 선택적 매개 변수

선택적 매개 변수 하나를 사용하는 프로시저를 오버로드하려면

  1. Sub 매개 변수 목록에 선택적 매개 변수를 포함하는 선언 문을 작성합니다Function. 이 오버로드된 Optional 버전에서는 키워드를 사용하지 마세요.

  2. Sub 키워드를 Function 또는 키워드 앞에 두십시오.

  3. 호출 코드에서 선택적 인수를 제공할 때 실행해야 하는 프로시저 코드를 작성합니다.

  4. End Sub 또는 End Function 문을 적절하게 사용하여 프로시저를 종료합니다.

  5. 매개 변수 목록에 선택적 매개 변수를 포함하지 않는다는 점을 제외하고 첫 번째 선언과 동일한 두 번째 선언문을 작성합니다.

  6. 호출 코드에서 선택적 인수를 제공하지 않을 때 실행해야 하는 프로시저 코드를 작성합니다. End Sub 또는 End Function 문을 적절하게 사용하여 프로시저를 종료합니다.

    다음 예제에서는 선택적 매개 변수로 정의된 프로시저, 두 오버로드된 프로시저 집합 및 마지막으로 유효하지 않은 오버로드된 버전과 유효한 오버로드된 버전의 예제를 보여 줍니다.

    Sub q(ByVal b As Byte, Optional ByVal j As Long = 6)
    
    ' The preceding definition is equivalent to the following two overloads.
    ' Overloads Sub q(ByVal b As Byte)
    ' Overloads Sub q(ByVal b As Byte, ByVal j As Long)
    
    ' Therefore, the following overload is not valid because the signature is already in use.
    ' Overloads Sub q(ByVal c As Byte, ByVal k As Long)
    ' The following overload uses a different signature and is valid.
    Overloads Sub q(ByVal b As Byte, ByVal j As Long, ByVal s As Single)
    

여러 선택적 매개 변수

둘 이상의 선택적 매개 변수가 있는 프로시저의 경우 일반적으로 오버로드된 버전이 두 개 이상 필요합니다. 예를 들어 두 개의 선택적 매개 변수가 있고 호출 코드가 각각을 서로 독립적으로 제공하거나 생략할 수 있는 경우 제공된 인수의 가능한 조합마다 하나씩 4개의 오버로드된 버전이 필요합니다.

선택적 매개 변수 수가 증가함에 따라 오버로드의 복잡성이 증가합니다. 제공된 인수의 일부 조합이 허용되지 않는 한 N 선택적 매개 변수의 경우 2 ^ N 오버로드된 버전이 필요합니다. 프로시저의 특성에 따라 논리의 명확성이 오버로드된 모든 버전을 정의하는 추가 작업을 정당화할 수 있습니다.

둘 이상의 선택적 매개 변수를 사용하는 프로시저를 오버로드하려면

  1. 프로시저 논리에 허용되는 제공된 선택적 인수의 조합을 결정합니다. 선택적 매개 변수가 다른 매개 변수에 의존하는 경우 허용되지 않는 조합이 발생할 수 있습니다. 예를 들어 한 매개 변수가 사람의 이름을 수락하고 다른 매개 변수가 사용자의 나이를 수락하는 경우 나이를 제공하지만 이름을 생략하는 인수의 조합은 허용되지 않습니다.

  2. 제공된 선택적 인수의 허용되는 각 조합에 대해 해당 매개 변수 목록을 정의하는 선언 문을 작성합니다 SubFunction. 키워드를 Optional 사용하지 마세요.

  3. 각 선언에서 Sub 또는 Function 키워드 앞에 오버로드 키워드를 추가합니다.

  4. 각 선언에 따라 호출 코드가 해당 선언의 매개 변수 목록에 해당하는 인수 목록을 제공할 때 실행해야 하는 프로시저 코드를 작성합니다.

  5. 각 프로시저를 적절하게 End Sub 또는 End Function 문으로 종료합니다.

참고하십시오