Instrução Function (Visual Basic)
Declara o nome, parâmetros e código que definem um procedimento Function.
Observação: |
---|
Visual Basic 2008 apresenta as expressões lambda, que permitem definir expressões de função na linha.Para obter mais informações, consulte Expressões de função e Expressões Lambda. |
[ <attributelist> ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ]
Function name [ (Of typeparamlist) ] [ (parameterlist) ] [ As returntype ] [ Implements implementslist | Handles eventlist ]
[ statements ]
[ Exit Function ]
[ statements ]
End Function
Partes
attributelist
Opcional.Veja Lista de Atributos.accessmodifier
Opcional.Pode ser um dos seguintes:proceduremodifiers
Opcional.Pode ser um dos seguintes:MustOverride Overrides
NotOverridable Overrides
Shared
Opcional.Consulte Compartilhada.Shadows
Opcional.Acesse Shadows.name
Obrigatório.Nome do procedimento.SeeNomes de Elementos Declarados.typeparamlist
Opcional.Lista de parâmetros de tipo para um procedimento genérico.Consulte Type List.parameterlist
Opcional.Lista de nomes variável local que representam os parâmetros deste procedimento.SeeLista de parâmetros.returntype
Necessário se Option Strict estiver On.Tipo de Dados do valor retornado por esse procedimento.Implements
Opcional.Indica que essa propriedade implementa uma ou mais procedimentos Function, cada uma delas definida em uma interface implementada por essa classe ou estrutura contendo o procedimento.SeeImplementa Declaração.implementslist
Necessário se Implements é fornecido.Lista de procedimentos Function que serão implementadosimplementedprocedure [ , implementedprocedure ... ]
Cada implementedprocedure possui a seguinte sintaxe e partes:
interface.definedname
Parte
Descrição
interface
Obrigatório.Nome de uma interface implementada por essa classe ou estrutura contendo o procedimento.
definedname
Obrigatório.Nome pelo qual o procedimento é definido em interface.
Handles
Opcional.Indica que esse procedimento pode manipular um ou mais eventos específicos.SeeTrata.eventlist
Necessário se Handles é fornecido.Lista de eventos que esse procedimento manipula.eventspecifier [ , eventspecifier ... ]
Cada eventspecifier possui a seguinte sintaxe e partes:
eventvariable.event
Parte
Descrição
eventvariable
Obrigatório.Variável de objeto declarada com o tipo de dados da classe ou estrutura que gera o evento.
event
Obrigatório.Nome do evento que esse procedimento manipula.
statements
Opcional.Bloco de instruções a ser executado dentro deste procedimento.EndFunction
Finaliza a definição desse procedimento.
Comentários
Todos os códigos executáveis deverão estar dentro de um procedimento.Cada procedimento por sua vez é declarado em uma classe, estrutura ou módulo, que é chamado de classe, estrutura ou módulo continente.
Use um procedimento Function quando precisar retornar um valor para o código de chamada.Use um procedimento Sub quando você não precisa retornar um valor.
Você pode definir um Function procedimento somente no nível de módulo. Isso significa que o contexto da declaração para uma função deve ser uma classe, estrutura, módulo, ou interface, e não pode ser um arquivo fonte, namespace, procedimento ou bloco.Para obter mais informações, consulte Declaração de contextos e níveis de acesso padrão.
Procedimentos Function têm acesso público como padrão.Você pode ajustar os níveis de acesso com os modificadores de acesso.
Você pode chamar um Function procedimento no lado direito de uma expressão quando desejar usar o valor retornado pela função. Você usa o procedimento Function da mesma maneira que usa qualquer função de biblioteca como Sqrt,Cos,ou ChrW.
Você chama um procedimento Function usando o nome do procedimento, seguido de lista de argumentos entre parênteses, em uma expressão.Você pode omitir parênteses somente se você não está fornecendo quaisquer argumentos.No entanto, seu código é mais legível se você sempre incluir os parênteses.
Também pode ser chamada uma função usando a instrução Call, caso no qual o valor de retorno será ignorado.
Regras
Tipo de retorno. Uma instrução Function pode declarar o tipo de dados do valor que retorna.Você pode especificar qualquer tipo de dados ou o nome de uma enumeração, estrutura, classe ou interface.
Se você não especificar returntype, a procedimento retorna Object.
Implementação Se esse procedimento utiliza a palavra-chave Implements , a classe ou estrutura continente deve também ter uma instrução Implements imediatamente após sua declaração de Class ou Structure.A instrução Implements deve incluir cada interface especificada em implementslist.No entanto, o nome pelo qual uma interface define a Function (em definedname) não precisa ser o mesmo que o nome do procedimento (em name).
Comportamento
Retornando a partir de um Procedimento. Quando o procedimento Function retorna para o código de chamada, a execução continua com a instrução após a instrução que o chamou.
O Exit Function e instruções Return causam saída imediata de um procedimento Function.Qualquer número de declarações Exit Function e Return pode aparecer em qualquer lugar no procedimento, e você pode misturar declarações Exit Function e Return.
Valor de Retorno Para retornar um valor de uma função, você pode atribuir o valor ao nome da função ou incluí-lo em uma instrução Return.O exemplo a seguir atribui o valor de retorno ao nome da função myFunction e, em seguida, usa a instrução Exit Function para retornar.
Function myFunction(ByVal j As Integer) As Double myFunction = 3.87 * j Exit Function End Function
Se você usar Exit Function sem atribuir um valor para name, o procedimento retornará o valor padrão para o tipo de dados especificado em returntype.Se returntype não for especificado, o procedimento retorna Nothing, o valor padrão para Object.
A declaração Return simultaneamente atribui o valor de retorno do procedimento e sai da função.O exemplo a seguir mostra isso.
Function myFunction(ByVal j As Integer) As Double Return 3.87 * j End Function
Solução de problemas
- Ordem de Execução. Visual Basic, às vezes, reorganiza expressões aritméticas para aumentar a eficiência interna.Por esse motivo, evite usar um procedimento Function em uma expressão aritmética quando a função altera o valor de variáveis na mesma expressão.
Exemplo
O exemplo a seguir utiliza a instrução Function para declarar o nome, parâmetros e código que formam o corpo de um procedimento Function.O modificador ParamArray permite que a função aceite um número variável 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
O exemplo a seguir chama a função declarada no exemplo 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.
Consulte também
Tarefas
Como: Usar uma classe genérica
Solucionando problemas de procedimentos
Conceitos
Referência
Sub-rotina demonstrativo (Visual Basic)
Instrução Dim (Visual Basic)