Passando argumentos por posição e por nome (Visual Basic)

Quando você chama um procedimento Sub ou Function, você pode passar argumentos pela posição — na ordem em que aparecem na definição do procedimento — ou você pode passá-los pelo nome , sem consideração à posição.

Quando você passa um argumento pelo nome, você especifica o nome declarado do argumento seguido por dois-pontos e um sinal de igualdade (:=), seguido do valor do argumento.Você pode fornecer argumentos nomeados em qualquer ordem.

Por exemplo, o procedimento Sub a seguir utiliza três argumentos:

Sub studentInfo(ByVal name As String, 
       Optional ByVal age As Short = 0, 
       Optional ByVal birth As Date = #1/1/2000#)

  Debug.WriteLine("Name = " & name & 
                "; age = " & CStr(age) & 
                "; birth date = " & CStr(birth))
End Sub

Quando você chamar esse procedimento, você poderá fornecer os argumentos por posição, por nome, ou usando uma mistura dos dois.

Passando argumentos por posição

Você pode chamar o procedimento studentInfo com seus argumentos passados por posição e delimitados por vírgulas, como mostrado no exemplo o seguir:

Call studentInfo("Mary", 19, #9/21/1981#)

Se você omitir um argumento opcional em um lista de argumentos posicionais, você deve manter seu lugar com uma vírgula.O exemplo a seguir chama studentInfo sem o argumento age :

Call studentInfo("Mary", , #9/21/1981#)

Passando argumentos por nome

Como alternativa, você pode chamar studentInfo com os argumentos passados pelo nome, também delimitado por vírgulas, como mostrado no exemplo o seguir:

Call studentInfo(age:=19, birth:=#9/21/1981#, name:="Mary")

Misturando argumentos por posição e por nome

Você pode fornecer argumentos tanto por posição quanto por nome em uma única chamada de procedimento, conforme mostrado no exemplo a seguir:

Call studentInfo("Mary", birth:=#9/21/1981#)

No exemplo anterior, não é necessária uma vírgula extra para manter o lugar do argumento age omitido, desde que birth seja passado por nome.

Quando você fornecer argumentos por uma mistura de posição e nome, os argumentos posicionais devem todos vir primeiro.Depois que você fornecer um argumento pelo nome, os argumentos restantes devem ser todos por nome.

Fornecendo argumentos opcionais por nome

Passar argumentos por nome é especialmente útil quando você chama um procedimento que tem mais de um argumento opcional.Se você fornecer argumentos pelo nome, não é necessário usar vírgulas consecutivas para indicar argumentos posicionais ausentes.Passar argumentos por nome também facilita manter controle de quais argumentos você está passando e quais você está omitindo.

Restrições no fornecimento de argumentos por nome

Não é possível passar argumentos pelo nome para evitar digitar argumentos necessários.Você pode omitir somente os argumentos opcionais.

Você não pode passar uma matriz de parâmetros por nome.Isso ocorre porque quando você chama o procedimento, você fornece um número indefinido de argumentos separados por vírgula para a matriz de parâmetros, e o compilador não pode associar um único nome a mais de um argumento.

Consulte também

Tarefas

Como: passar argumentos para um procedimento (Visual Basic)

Referência

Opcional (Visual Basic)

ParamArray (Visual Basic)

Conceitos

Procedimentos no Visual Basic

Parâmetros de procedimentos e argumentos (Visual Basic)

Passando argumentos por valor e por referência (Visual Basic)

Parâmetros opcionais (Visual Basic)

Matrizes de parâmetros (Visual Basic)