Declara el nombre, los parámetros y el código que definen un procedimiento Function.
[ <attributelist> ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ]
Function name [ (Of typeparamlist) ] [ (parameterlist) ] [ As returntype ] [ Implements implementslist | Handles eventlist ]
[ statements ]
[ Exit Function ]
[ statements ]
End Function
- attributelist
-
Opcional. Vea la Lista de atributos.
- accessmodifier
-
Opcional. Puede ser una de las siguientes:
Vea Niveles de acceso en Visual Basic.
- proceduremodifiers
-
Opcional. Puede ser una de las siguientes:
- Shared
-
Opcional. Vea Shared.
- Shadows
-
Opcional. Vea Shadows.
- name
-
Obligatorio. Nombre del procedimiento. Vea Nombres de elementos declarados.
- typeparamlist
-
Opcional. Lista de parámetros de tipo para un procedimiento genérico. Vea la Lista de tipos.
- parameterlist
-
Opcional. Lista de nombres de variables locales que representan los parámetros de este procedimiento. Vea la Lista de argumentos.
- returntype
-
Obligatorio si Option Strict es On. Tipo de datos del valor devuelto por este procedimiento.
- Implements
-
Opcional. Indica que este procedimiento implementa uno o más procedimientos Function, cada uno de los cuales se define en una interfaz implementada por la clase contenedora o la estructura de este procedimiento. Vea Implements (Instrucción).
- implementslist
-
Requerido si se suministra Implements. Lista de procedimientos Function que se implementan.
implementedprocedure [ , implementedprocedure ... ]
Cada implementedprocedure tiene la sintaxis y las partes siguientes:
interface.definedname
|
Parte
|
Descripción
|
| interface | Obligatorio. Nombre de una interfaz implementada por la clase contenedora o la estructura de este procedimiento. |
| definedname | Obligatorio. Nombre por el que se define el procedimiento en interface. |
- Handles
-
Opcional. Indica que este procedimiento puede controlar uno o más eventos específicos. Vea Handles.
- eventlist
-
Requerido si se suministra Handles. Lista de eventos que controla este procedimiento.
eventspecifier [ , eventspecifier ... ]
Cada eventspecifier tiene la sintaxis y las partes siguientes:
eventvariable.event
|
Parte
|
Descripción
|
| eventvariable | Obligatorio. Variable de objeto declarada con el tipo de datos de la clase o estructura que provoca el evento. |
| event | Obligatorio. Nombre del evento que controla este procedimiento. |
- statements
-
Opcional. Bloque de instrucciones que se ejecutan dentro de este procedimiento.
- End Function
-
Termina la definición de este procedimiento.
El código ejecutable debe estar en un procedimiento. Cada procedimiento se declara a su vez dentro de una clase, estructura o módulo, que se denominan clase contenedora, estructura o módulo.
Utilice un procedimiento Function cuando necesita devolver un valor al código de llamada. Utilice un procedimiento Sub cuando no necesita devolver un valor.
Sólo puede utilizar Function en el nivel de módulo. Esto significa que el contexto de la declaración para una función debe ser una clase, estructura, módulo o interfaz y no puede ser un archivo de código fuente, espacio de nombres, procedimiento o bloque. Para obtener más información, vea Contextos de declaración y niveles de acceso predeterminados.
Los procedimientos Function tienen como valor predeterminado el acceso público. Puede ajustar sus niveles de acceso con los modificadores de acceso.
Se puede utilizar un procedimiento Function en el lado derecho de una expresión cuando desee utilizar el valor devuelto por la función. El procedimiento Function se utiliza de la misma manera que utiliza cualquier función de la biblioteca como por ejemplo Sqrt, Cos o ChrW.
Puede llamar a un procedimiento Function con el nombre del procedimiento, seguido por la lista de argumentos entre paréntesis, en una expresión. Si no se proporcionan argumentos, se pueden omitir los paréntesis. Sin embargo, el código es más legible si se incluyen siempre los paréntesis.
Se puede llamar una función también mediante la instrucción Call. En cualquier caso, el valor devuelto se pasará por alto.
Reglas
-
Tipo de valor devuelto. La instrucción Function puede declarar el tipo de datos del valor que devuelve. Puede especificar cualquier tipo de datos o el nombre de una enumeración, estructura, clase o interfaz.
Si no especifica returntype, el procedimiento devuelve un tipo Object.
-
Implementación. Si este procedimiento utiliza la palabra clave Implements, la clase contenedora o la estructura también deben incluir una instrucción Implements inmediatamente después de la instrucción Class o Structure. La instrucción Implements debe incluir cada interfaz especificada en implementslist. Sin embargo, el nombre con el que una interfaz define Function (en definedname) no tiene que ser el mismo que el nombre de este procedimiento (en name).
Comportamiento
-
Volver de un procedimiento. Cuando el procedimiento Function vuelva al código de llamada, la ejecución continúa con la instrucción que sigue a la instrucción que lo llamó.
Las instrucciones Exit Function y Return provocan una salida inmediata de un procedimiento Function. Puede aparecer cualquier número de instrucciones Exit Function y Return en cualquier parte del procedimiento y puede combinar instrucciones Exit Function y Return.
-
Valor devuelto. Para devolver un valor de una función, se puede asignar el valor al nombre de función o incluirlo en una instrucción Return. El ejemplo siguiente asigna el valor devuelto al nombre de función myFunction y, a continuación, utiliza la instrucción Exit Function para volver:
Function myFunction(ByVal j As Integer) As Double
myFunction = 3.87 * j
Exit Function
End Function
Si utiliza Exit Function sin asignar un valor a name, el procedimiento devuelve el valor predeterminado del tipo de datos especificado en returntype. Si no se especifica returntype, el procedimiento devuelve Nothing, el valor predeterminado de Object.
La instrucción Return asigna el valor devuelto y sale de la función. Esto se muestra en el siguiente ejemplo.
Function myFunction(ByVal j As Integer) As Double
Return 3.87 * j
End Function
Solución de problemas
En el siguiente ejemplo se utiliza la instrucción Function para declarar el nombre, parámetros y código que forman el cuerpo de un procedimiento Function. El modificador ParamArray permite a la función aceptar un número variable de argumentos.
Public Function calcSum(ByVal ParamArray args() As Double) As Double
calcSum = 0
If args.Length <= 0 Then Exit Function
For i As Integer = 0 To UBound(args, 1)
calcSum += args(i)
Next i
End Function
En el ejemplo siguiente se invoca a la función declarada en el ejemplo anterior.
Dim returnedValue As Double = calcSum(4, 3, 2, 1)
' The function's local variables are assigned the following values:
' args(0) = 4, args(1) = 3, and so on.
Tareas
Cómo: Utilizar una clase genérica
Procedimientos de solución de problemas
Referencia
Instrucción Sub (Visual Basic)
Lista de parámetros
Instrucción Dim (Visual Basic)
Instrucción Call (Visual Basic)
Of
Conceptos
Matrices de parámetros