Passing Arguments by Position and by Name

When you call a procedure, you usually pass arguments by position — the same sequence given in the declaration of the procedure. But you can also pass them by name, and ignore their positions.

When you pass an argument by name, you give the sequence: (1) its name from the declaration, (2) a colon and an equals sign (:=), and (3) the argument value. Named arguments ignore all position information.

For example, you can pass three arguments to the procedure that follows.

Sub Test ( arg1 As String,
        Optional arg2 As String = "bar",
        arg3 As Int32 = 42 )
    #Debug.PrintLine $"arg1 = ""{arg1}"""
    #Debug.PrintLine $"arg2 = ""{arg2}"""
    #Debug.PrintLine $"arg3 = {arg3}"
End Sub

Arguments passed by position

Call Test "foo", "baz", 3
Call Test "foo", , 3

Arguments passed by name

Call Test arg3 := 3, arg2 := "baz", arg1 := "foo"

Mixed arguments, by position and by name

Call Test "foo", arg3 := 3, arg2 := "baz"

Optional arguments supplied by name

TODO

Limits on arguments supplied by name

TODO

See also