Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al llamar a un Sub
procedimiento o Function
, puede pasar argumentos por posición (en el orden en que aparecen en la definición del procedimiento) o puede pasarlos por nombre, sin tener en cuenta la posición.
Cuando se pasa un argumento por nombre, se especifica el nombre declarado del argumento seguido de dos puntos y un signo igual (:=
), seguido del valor del argumento. Puedes proporcionar argumentos con nombre en cualquier orden.
Por ejemplo, el procedimiento siguiente Sub
toma tres argumentos:
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
Al llamar a este procedimiento, puede proporcionar los argumentos por posición, por nombre o mediante una combinación de ambos.
Pasar argumentos por posición o por nombre
Puede llamar al Display
método con sus argumentos pasados por posición y delimitados por comas, como se muestra en el ejemplo siguiente:
StudentInfo.Display("Mary", 19, #9/21/1998#)
Si omites un argumento opcional en una lista de argumentos posicionales, debes mantener su lugar con una coma. En el ejemplo siguiente se llama al Display
método sin el age
argumento :
StudentInfo.Display("Mary",, #9/21/1998#)
Pasar argumentos por nombre
Como alternativa, puede llamar a Display
con los argumentos pasados por nombre, también delimitados por comas, como se muestra en el ejemplo siguiente.
StudentInfo.Display(age:=19, birth:=#9/21/1998#, name:="Mary")
Pasar argumentos por nombre de esta manera es especialmente útil cuando se llama a un procedimiento que tiene más de un argumento opcional. Si proporciona argumentos por nombre, no tiene que usar comas consecutivas para indicar argumentos posicionales que faltan. Pasar argumentos por nombre también facilita el seguimiento de los argumentos que se pasan y cuáles se omiten.
Mezclar argumentos por posición y por nombre
Puede proporcionar argumentos por posición y por nombre en una sola llamada a procedimiento, como se muestra en el ejemplo siguiente:
StudentInfo.Display("Mary", birth:=#9/21/1998#)
En el ejemplo anterior, no es necesario que ninguna coma adicional contenga el lugar del argumento omitido age
, ya que birth
se pasa por nombre.
En versiones de Visual Basic anteriores a la versión 15.5, cuando se proporcionan argumentos por una combinación de posición y nombre, los argumentos posicionales deben venir primero. Una vez que proporcione un argumento por nombre, todos los argumentos restantes deben pasarse por nombre. Por ejemplo, la siguiente llamada al Display
método muestra el error del compilador BC30241: argumento con nombre esperado.
StudentInfo.Display("Mary", age:=19, #9/21/1998#)
A partir de Visual Basic 15.5, los argumentos posicionales pueden seguir a los argumentos nombrados si los argumentos posicionales finales están en la posición correcta. Si se compila en Visual Basic 15.5, la llamada anterior al Display
método se compila correctamente y ya no genera el error del compilador BC30241.
Esta capacidad para combinar y buscar coincidencias con argumentos con nombre y posición en cualquier orden es especialmente útil cuando se desea usar un argumento con nombre para que el código sea más legible. Por ejemplo, el constructor de clase siguiente Person
requiere dos argumentos de tipo Person
, ambos de los cuales pueden ser Nothing
.
Public Sub New(name As String, father As Person, mother As Person, dateOfBirth As Date)
El uso de argumentos con nombre y posición mixtos ayuda a que la intención del código sea clara cuando el valor de los father
argumentos y mother
es Nothing
:
Dim p = New Person("Mary", father:=Nothing, mother:=Nothing, #9/21/1998#)
Para seguir los argumentos posicionales con argumentos con nombre, debe agregar el siguiente elemento al archivo del proyecto de Visual Basic (*.vbproj):
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
Para obtener más información, consulte establecimiento de la versión del lenguaje Visual Basic.
Restricciones en el suministro de argumentos por nombre
No se pueden pasar argumentos por nombre para evitar escribir argumentos necesarios. Solo puede omitir los argumentos opcionales.
No se puede pasar una matriz de parámetros por nombre. Esto se debe a que cuando se llama al procedimiento, se proporciona un número indefinido de argumentos separados por comas para la matriz de parámetros y el compilador no puede asociar más de un argumento con un solo nombre.