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:

    SeeNíveis de acesso em Visual Basic.

  • proceduremodifiers
    Opcional.Pode ser um dos seguintes:

  • 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 implementados

    implementedprocedure [ , 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

Matrizes de parâmetro

Expressões Lambda

Referência

Sub-rotina demonstrativo (Visual Basic)

Lista de parâmetros

Instrução Dim (Visual Basic)

Chamar demonstrativo (Visual Basic)

Of

Expressões de função