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

Sub 또는 Function 프로시저를 호출할 때 프로시저의 정의에 나타나는 순서대로 위치별로 인수를 전달하거나 위치에 관계없이 이름으로 인수를 전달할 수 있습니다.

인수를 이름으로 전달하는 경우 인수의 선언된 이름, 콜론, 등호(:=), 인수 값을 차례로 지정합니다. 명명된 인수를 순서에 관계없이 제공할 수 있습니다.

예를 들어, 다음 Sub 프로시저는 세 개의 인수를 사용합니다.

Public Class StudentInfo
    Shared Sub Display(name As String,
                Optional age As Short = 0,
                Optional birth As Date = #1/1/2000#)

        Console.WriteLine($"Name = {name}; age = {age}; birth date = {birth:d}")
    End Sub
End Class

이 프로시저를 호출할 때 위치, 이름 또는 둘을 혼합하여 인수를 제공할 수 있습니다.

위치별로 인수 전달하기

다음 예와 같이 위치별로 전달되고 쉼표로 구분된 인수를 사용하여 Display 메서드를 호출할 수 있습니다.

StudentInfo.Display("Mary", 19, #9/21/1998#)

위치 인수 목록에서 선택적 인수를 생략하는 경우 해당 위치를 쉼표로 유지해야 합니다. 다음 예에서는 age 인수 없이 Display 메서드를 호출합니다.

StudentInfo.Display("Mary",, #9/21/1998#)

이름으로 인수 전달

또는 다음 예와 같이 쉼표로 구분된 이름별로 전달된 인수를 사용하여 Display를 호출할 수 있습니다.

StudentInfo.Display(age:=19, birth:=#9/21/1998#, name:="Mary")

이러한 방식으로 인수를 이름으로 전달하는 것은 둘 이상의 선택적 인수가 있는 프로시저를 호출할 때 특히 유용합니다. 이름으로 인수를 제공하는 경우 누락된 위치 인수를 표시하기 위해 연속적인 쉼표를 사용할 필요가 없습니다. 인수를 이름으로 전달하면 전달하는 인수와 생략하는 인수를 추적하기가 더 쉬워집니다.

위치별 및 이름별 인수 혼합

다음 예와 같이 단일 프로시저 호출에서 위치와 이름을 기준으로 인수를 제공할 수 있습니다.

StudentInfo.Display("Mary", birth:=#9/21/1998#)

앞의 예에서는 birth가 이름으로 전달되므로 생략된 age 인수의 위치를 유지하기 위해 추가 쉼표가 필요하지 않습니다.

15.5 이전의 Visual Basic 버전에서는 위치와 이름을 혼합하여 인수를 제공하는 경우 위치 인수가 모두 먼저 와야 합니다. 이름으로 인수를 제공하면 나머지 인수는 모두 이름으로 전달되어야 합니다. 예를 들어, Display 메서드에 대한 다음 호출은 컴파일러 오류 BC30241: 명명된 인수가 필요함을 표시합니다.

StudentInfo.Display("Mary", age:=19, #9/21/1998#)

Visual Basic 15.5부터 끝 위치 인수가 올바른 위치에 있으면 위치 인수가 명명된 인수 뒤에 올 수 있습니다. Visual Basic 15.5에서 컴파일된 경우 Display 메서드에 대한 이전 호출이 성공적으로 컴파일되고 더 이상 컴파일러 오류 BC30241을 생성하지 않습니다.

명명된 인수와 위치 인수를 순서에 관계없이 혼합하고 일치시키는 이 기능은 명명된 인수를 사용하여 코드를 더 쉽게 읽을 수 있도록 하려는 경우 특히 유용합니다. 예를 들어, 다음 Person 클래스 생성자에는 Person 형식의 두 인수가 필요하며 둘 다 Nothing일 수 있습니다.

Public Sub New(name As String, father As Person, mother As Person, dateOfBirth As Date)

명명된 인수와 위치 인수를 혼합하면 fathermother 인수의 값이 Nothing일 때 코드의 의도를 명확하게 하는 데 도움이 됩니다.

Dim p = New Person("Mary", father:=Nothing, mother:=Nothing, #9/21/1998#)

명명된 인수와 함께 위치 인수를 따르려면 Visual Basic 프로젝트(*.vbproj) 파일에 다음 요소를 추가해야 합니다.

<PropertyGroup>
  <LangVersion>15.5</LangVersion>
</PropertyGroup>

자세한 내용은 Visual Basic 언어 버전 설정을 참조하세요.

이름으로 인수 제공에 대한 제한 사항

필수 인수를 입력하지 않으려면 인수를 이름으로 전달할 수 없습니다. 선택적 인수만 생략할 수 있습니다.

매개 변수 배열을 이름으로 전달할 수 없습니다. 프로시저를 호출할 때 매개 변수 배열에 대해 쉼표로 구분하여 무한한 수의 인수를 제공하지만 컴파일러가 단일 이름에 둘 이상의 인수를 연결할 수 없기 때문입니다.

참고 항목