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

매개 변수 배열을 프로시저의 매개 변수 목록에서 마지막 항목으로 선언할 수 있습니다. 이렇게 하면 프로시저에서 해당 매개 변수에 대해 단 하나의 값이 아닌 여러 개의 값을 사용할 수 있습니다. 프로시저를 정의할 때 해당 값의 개수는 몰라도 됩니다. 프로시저를 호출할 때마다 여러 개의 값이 개별적으로 결정되며, 호출할 때마다 전달되는 값의 개수도 다를 수 있습니다.

자세한 내용은 매개 변수 배열(Visual Basic)을 참조하십시오.

마지막 매개 변수의 값을 무제한으로 사용할 수 있는 프로시저를 정의하려면

  1. 프로시저 선언에서 일반적인 방식으로 매개 변수 목록을 정의합니다. 마지막 매개 변수를 제외한 모든 매개 변수가 Optional(Visual Basic)이 아닌 필수 항목이어야 합니다.

  2. 마지막 매개 변수 이름 앞에 ByVal ParamArray 키워드를 지정합니다. 이 매개 변수는 자동으로 선택 항목이므로, Optional 키워드는 포함하지 마십시오.

  3. 매개 변수 배열 이름 다음에 한 쌍의 빈 괄호를 지정합니다.

  4. 빈 괄호 다음에 일반적인 As 절을 지정합니다.

  5. As 절에 기본값은 지정하지 않습니다. As 절에 지정한 데이터 형식의 빈 1차원 배열이 자동으로 매개 변수 배열의 기본값이 됩니다.

매개 변수 배열 값 사용

프로시저 내의 코드는 매개 변수 배열을 각 요소의 데이터 형식이 ParamArray 데이터 형식과 동일한 1차원 배열로 다루어야 합니다.

매개 변수 배열 값 중 하나에 액세스하려면

  1. 프로시저 코드에서 매개 변수 배열 이름에 대해 UBound 함수를 호출하여 매개 변수 배열에 전달되는 배열의 길이를 결정합니다.

  2. 프로시저 코드의 실행 문에서 매개 변수 배열 이름 다음에 첨자를 괄호로 묶어 지정합니다. 이 첨자는 0과 UBound에서 반환된 상한 사이의 값이어야 합니다.

보안 정보보안 정보

무제한으로 커질 수 있는 배열을 처리할 때마다 응용 프로그램의 내부 용량에 오버런이 발생할 위험이 있습니다. 호출 코드로부터 매개 변수 배열을 받는 경우에는 해당 길이를 테스트해야 합니다. 이때 길이가 너무 길어서 해당 배열을 응용 프로그램에 사용할 수 없을 때는 적절한 조치를 취합니다.

예제

다음 예제에서는 매개 변수 배열이 있는 프로시저를 정의하고 매개 변수 배열에 전달되는 모든 배열 요소의 값을 출력합니다.

Sub studentScores(ByVal name As String, ByVal ParamArray scores() As String)
    Debug.WriteLine("Scores for " & name & ":" & vbCrLf)
    ' Use UBound to determine largest subscript of the array.
    For i As Integer = 0 To UBound(scores, 1)
        Debug.WriteLine("Score " & i & ": " & scores(i))
    Next i
End Sub

다음 예제에서는 studentScores에 대한 일반적인 호출을 보여 줍니다.

Call studentScores("Anne", "10", "26", "32", "15", "22", "24", "16")
Call studentScores("Mary", "High", "Low", "Average", "High")
Dim JohnScores() As String = {"35", "Absent", "21", "30"}
Call studentScores("John", JohnScores)

코드 컴파일

ParamArray가 매개 변수 목록에서 마지막 매개 변수인지, 이전 매개 변수 중에는 Optional로 선언된 매개 변수가 없는지 확인합니다.

참고 항목

작업

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

참조

ByVal(Visual Basic)

ParamArray(Visual Basic)

개념

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

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

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

선택적 매개 변수(Visual Basic)

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

Visual Basic의 형식 검사

Visual Basic의 배열