En el ejemplo anterior, cuando llamemos al procedimiento Datos( ), el entorno de .NET Framework,
en función de si pasamos o no parámetros al procedimiento, y de cómo sean estos parámetros,
ejecutará la versión adecuada del procedimiento.
Ya que el protocolo o firma del procedimiento es el elemento que emplea .NET Framework para
diferenciar cada una de sus versiones o implementaciones, las listas de parámetros de cada versión
deben ser diferentes al menos en uno de los siguientes aspectos:
• Número de parámetros.
• Orden de los parámetros.
• Tipo de dato de los parámetros.
Por consiguiente, no es posible crear dos procedimientos sobrecargados que sólo se diferencien en los
nombres de los parámetros, por los modificadores de ámbito (Public, Private, etc.), o por el tipo de
dato de retorno en el caso de un procedimiento Function.
Una vez vistas las normas y restricciones aplicables a los procedimientos sobrecargados, veamos en el
Código fuente 113 como solucionaríamos el problema planteado al comienzo de este apartado
empleando esta técnica.Sub Main()
Dim Dias As Integer
' mostrar datos del empleado según nombre
VerEmpleado("Pedro")
' mostrar datos del empleado según edad
Dias = VerEmpleado(28)
Console.WriteLine("Días libres del empleado: {0}", Dias)
Console.WriteLine()
' mostrar salario pasando las horas trabajadas
VerEmpleado(25, 80)
Console.ReadLine()
End Sub
Overloads Sub VerEmpleado(ByVal Nombre As String)
Console.WriteLine("Datos empleado por nombre")
Console.WriteLine("Nombre del empleado: {0}", Nombre)
Console.WriteLine("Domicilio: Colina Alta,12")
Console.WriteLine("Localidad: Salamanca")
Console.WriteLine()
End Sub
Overloads Function VerEmpleado(ByVal Edad As Integer) As Integer
Dim DiasLibres As Integer
Console.WriteLine("Datos empleado por edad")
Console.WriteLine("Edad del empleado: {0}", Edad)
Console.WriteLine("DNI:21555666")
Console.WriteLine("Fecha de alta en la empresa: 10/4/1997")
Console.WriteLine()
DiasLibres = 5
Return DiasLibres
End Function
Overloads Sub VerEmpleado(ByVal PrecioHora As Integer, ByVal HorasTrabajadas As
Long)
Dim Salario As Long
Salario = PrecioHora * HorasTrabajadas
Console.WriteLine("Salario según horas: {0}", Salario)
Console.WriteLine()
End Sub
Código fuente 113
No hay comentarios:
Publicar un comentario