다음을 통해 공유


방법: 매개 변수를 무제한으로 사용하는 프로시저 오버로드(Visual Basic)

프로시저에 ParamArray 매개 변수가 있는 경우 매개 변수 배열에 대해 1차원 배열을 사용하는 오버로드된 버전을 정의할 수 없습니다. 자세한 내용은 오버로드 프로시저의 고려 사항에서 "ParamArray 매개 변수에 대한 암시적 오버로드"를 참조하세요.

다양한 수의 매개 변수를 사용하는 프로시저를 오버로드하려면

  1. 프로시저 및 호출 코드 논리가 ParamArray 매개 변수보다 오버로드된 버전에서 더 많은 이점을 얻을 수 있음을 확인합니다. 오버로드 프로시저의 고려 사항에서 "오버로드 및 ParamArrays"를 참조하세요.

  2. 매개 변수 목록의 변수 부분에서 프로시저가 수락해야 하는 제공된 값의 수를 결정합니다. 값이 없는 경우를 포함할 수 있으며 단일 1차원 배열의 경우를 포함할 수 있습니다.

  3. 허용되는 각 제공된 값 수에 대해 해당 매개 변수 목록을 정의하는 Sub 또는 Function 선언문을 작성합니다. 이 오버로드된 버전에서는 Optional 키워드 또는 ParamArray 키워드를 사용하지 마세요.

  4. 각 선언에서 Overloads 키워드를 Sub 키워드 또는 Function 키워드 앞에 붙입니다.

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

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

예시

다음 예제에서는 ParamArray 매개 변수로 정의된 프로시저와 상응하는 오버로드된 프로시저 집합을 보여 줍니다.

Sub p(ByVal d As Date, ByVal ParamArray c() As Char)
' The preceding definition is equivalent to the following overloads.
' Overloads Sub p(ByVal d As Date)
' Overloads Sub p(ByVal d As Date, ByVal c() As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char, ByVal c2 As Char)
' And so on, with an additional Char argument in each successive overload.

매개 변수 배열에 대해 1차원 배열을 사용하는 매개 변수 목록을 사용하여 이러한 프로시저를 오버로드할 수 없습니다. 그러나 다른 암시적 오버로드의 서명을 사용할 수 있습니다. 다음 선언에서는 이를 보여 줍니다.

' The following overload is not valid because it takes an array for the parameter array.
' Overloads Sub p(ByVal x As Date, ByVal y() As Char)
' The following overload takes a single value for the parameter array and is valid.
Overloads Sub p(ByVal z As Date, ByVal w As Char)

오버로드된 버전의 코드는 호출 코드가 ParamArray 매개 변수에 대해 하나 이상의 값을 제공했는지, 아니면 얼마나 많은 값을 제공했는지 테스트할 필요가 없습니다. Visual Basic은 호출 인수 목록과 짝이 되는 버전에 컨트롤을 전달합니다.

코드 컴파일

ParamArray 매개 변수가 있는 프로시저는 오버로드된 버전 집합과 동일하므로 이러한 암시적 오버로드에 해당하는 매개 변수 목록을 사용하여 이러한 프로시저를 오버로드할 수 없습니다. 자세한 내용은 오버로드 프로시저의 고려 사항을 참조하세요.

.NET Framework 보안

무한히 커질 수 있는 배열을 처리할 때마다 애플리케이션의 일부 내부 용량이 초과될 위험이 있습니다. 매개 변수 배열을 수락하는 경우 호출 코드가 전달된 배열의 길이를 테스트하고 애플리케이션에 너무 큰 경우 적절한 단계를 수행해야 합니다.

참고 항목