또는 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#)
위치 인수 목록에서 선택적 인수를 생략하는 경우 해당 위치를 쉼표로 유지해야 합니다. 다음 예제에서는 Display
메서드를 age
인수 없이 호출합니다.
StudentInfo.Display("Mary",, #9/21/1998#)
이름으로 인수 전달
또는 다음 예제와 같이 이름으로 전달된 인수를 쉼표로 구분하여 호출 Display
할 수 있습니다.
StudentInfo.Display(age:=19, birth:=#9/21/1998#, name:="Mary")
이러한 방식으로 이름으로 인수를 전달하는 것은 둘 이상의 선택적 인수가 있는 프로시저를 호출할 때 특히 유용합니다. 이름으로 인수를 제공하는 경우 연속 쉼표로 누락된 위치 인수를 나타낼 필요가 없습니다. 또한 인수를 이름으로 전달하면 전달 중인 인수와 생략할 인수를 더 쉽게 추적할 수 있습니다.
위치 및 이름별 인수 혼합
다음 예제와 같이 단일 프로시저 호출에서 위치 및 이름별로 인수를 제공할 수 있습니다.
StudentInfo.Display("Mary", birth:=#9/21/1998#)
앞의 예제에서는 이름으로 전달되므로 생략된 age
인수 birth
의 위치를 유지하기 위해 추가 쉼표가 필요하지 않습니다.
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)
명명된 인수와 위치 인수를 혼합하여 사용하는 것은 인수 father
과 인수 mother
의 값이 Nothing
인 경우 코드의 의도를 명확하게 하는 데 도움이 됩니다.
Dim p = New Person("Mary", father:=Nothing, mother:=Nothing, #9/21/1998#)
명명된 인수를 사용하여 위치 인수를 따르려면 Visual Basic 프로젝트(*.vbproj) 파일에 다음 요소를 추가해야 합니다.
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
자세한 내용은 Visual Basic 언어 버전 설정을 참조하세요.
이름별 인수 제공 제한 사항
필수 인수를 입력하지 않도록 이름별로 인수를 전달할 수 없습니다. 선택적 인수만 생략할 수 있습니다.
매개 변수 배열을 이름으로 전달할 수 없습니다. 프로시저를 호출할 때 매개 변수 배열에 대해 무한수의 쉼표로 구분된 인수를 제공하고 컴파일러가 둘 이상의 인수를 단일 이름으로 연결할 수 없기 때문입니다.
참고하십시오
.NET