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.
Sobrecargar un procedimiento significa definirlo en varias versiones, usando el mismo nombre pero listas de parámetros diferentes. El propósito de la sobrecarga es definir varias versiones de un procedimiento que están estrechamente relacionadas, sin tener que diferenciarlas por su nombre. Para ello, puede 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 retorno (solo para un operador de conversión)
Junto con el nombre del procedimiento, los elementos anteriores se denominan colectivamente la firma del procedimiento. Cuando se llama 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 modificadores de procedimiento, como
Public
,Shared
yStatic
Nombres de parámetro o parámetro de tipo
Restricciones de parámetro de tipo (para un procedimiento genérico)
Palabras clave del modificador de parámetros, como
ByRef
yOptional
Si devuelve un valor
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 Sub
procedimiento para publicar una transacción con el saldo de un cliente y desea poder hacer referencia al cliente por nombre o por número de cuenta. Para dar cabida a esto, puede definir dos procedimientos diferentes Sub
, 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 consiste en 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 quería aceptar una cantidad de transacción en Decimal
o Single
, podría sobrecargar post
aún más para permitir esta variación. Si lo hizo en cada una de las sobrecargas del ejemplo anterior, tendría cuatro Sub
procedimientos, 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 de
- Cómo: Definir varias versiones de un procedimiento
- Procedimiento: Llamada a un procedimiento sobrecargado
- Cómo sobrecargar un procedimiento que toma parámetros opcionales
- Cómo: Sobrecargar un procedimiento que toma un número indefinido de parámetros
- Consideraciones sobre la sobrecarga de procedimientos
- Resolución de sobrecarga
- Sobrecargas
- Tipos genéricos en Visual Basic