Sobrecarga de procedimiento (Visual Basic)
La sobrecarga de un procedimiento significa definirlo en varias versiones, mediante el mismo nombre, pero listas de parámetros diferentes. El propósito de sobrecargar es definir varias versiones estrechamente relacionadas de un procedimiento sin tener que diferenciarlas por nombre. Para ello, debe variar la lista de parámetros.
Reglas de sobrecarga
Al sobrecargar un procedimiento, se aplican las reglas siguientes:
Mismo nombre. Cada versión sobrecargada debe usar el mismo nombre de procedimiento.
Firma diferente. Cada versión sobrecargada debe diferir de todas las demás versiones sobrecargadas en al menos uno de los siguientes aspectos:
Cantidad de parámetros
Orden de los parámetros
Tipos de datos de los parámetros
Número de parámetros de tipo (para un procedimiento genérico)
Tipo de valor devuelto (solo para un operador de conversión)
Junto con el nombre del procedimiento, los elementos anteriores se denominan colectivamente la firma del procedimiento. Al llamar a un procedimiento sobrecargado, el compilador usa la firma para comprobar que la llamada coincide correctamente con la definición.
Elementos que no forman parte de la firma. No se puede sobrecargar un procedimiento sin variar la firma. En concreto, no se puede sobrecargar un procedimiento variando solo uno o varios de los siguientes elementos:
Palabras clave de modificador del procedimiento, como
Public
,Shared
yStatic
Nombres de parámetro o parámetro de tipo
Restricciones de parámetros de tipo (para un procedimiento genérico)
Palabras clave del modificador de parámetros, como
ByRef
yOptional
Si devuelve un valor
El tipo de datos del valor devuelto (excepto para un operador de conversión)
Los elementos de la lista anterior no forman parte de la firma. Aunque no se pueden usar para diferenciar entre las versiones sobrecargadas, puede variarlos entre las versiones sobrecargadas que se diferencian correctamente mediante sus firmas.
Argumentos enlazados en tiempo de ejecución. Si piensa pasar una variable de objeto enlazada en tiempo de ejecución a una versión sobrecargada, debe declarar el parámetro adecuado como Object.
Varias versiones de un procedimiento
Supongamos que está escribiendo un procedimiento Sub
para publicar una transacción en el saldo de un cliente y desea poder hacer referencia al cliente por nombre o por número de cuenta. Para ello, puede definir dos procedimientos Sub
diferentes, como en el ejemplo siguiente:
Sub postName(ByVal custName As String, ByVal amount As Single)
' Insert code to access customer record by customer name.
End Sub
Sub postAcct(ByVal custAcct As Integer, ByVal amount As Single)
' Insert code to access customer record by account number.
End Sub
Versiones sobrecargadas
Una alternativa es sobrecargar un único nombre de procedimiento. Puede usar la palabra clave Overloads para definir una versión del procedimiento para cada lista de parámetros, como se indica a continuación:
Overloads Sub post(ByVal custName As String, ByVal amount As Single)
' Insert code to access customer record by customer name.
End Sub
Overloads Sub post(ByVal custAcct As Integer, ByVal amount As Single)
' Insert code to access customer record by account number.
End Sub
Sobrecargas adicionales
Si también desea aceptar un importe de transacción en Decimal
o Single
, puede sobrecargar post
aún más para permitir esta variación. Si ha hecho esto en cada una de las sobrecargas del ejemplo anterior, tendrá cuatro procedimientos Sub
, todos con el mismo nombre, pero con cuatro firmas diferentes.
Ventajas de sobrecargar
La ventaja de sobrecargar un procedimiento está en la flexibilidad de la llamada. Para usar el procedimiento post
declarado en el ejemplo anterior, el código de llamada puede obtener la identificación del cliente como String
o Integer
y, a continuación, llamar al mismo procedimiento en cualquiera de los dos casos. Esto se ilustra en el ejemplo siguiente:
Imports MSVB = Microsoft.VisualBasic
Dim customer As String
Dim accountNum As Integer
Dim amount As Single
customer = MSVB.Interaction.InputBox("Enter customer name or number")
amount = MSVB.Interaction.InputBox("Enter transaction amount")
Try
accountNum = CInt(customer)
Call post(accountNum, amount)
Catch
Call post(customer, amount)
End Try
Consulte también
- Procedimientos
- Procedimiento para definir varias versiones de un procedimiento
- Procedimiento para llamar a un procedimiento sobrecargado
- Procedimiento para sobrecargar un procedimiento que toma parámetros opcionales
- Procedimiento para sobrecargar un procedimiento que toma un número indefinido de parámetros
- Consideraciones sobre la sobrecarga de procedimientos
- Overload Resolution
- Sobrecargas
- Tipos genéricos en Visual Basic