Procedimento de sobrecarga (Visual Basic)

Sobrecarga um procedimento significa que a definição em várias versões, usando o mesmo nome mas listas de parâmetros diferentes.O objetivo de sobrecarga é definir várias versões intimamente relacionadas a um procedimento sem diferenciá-los pelo nome.Para fazer isso variando a lista de parâmetros.

Regras de sobrecarga.

Quando você sobrecarregar um procedimento, as seguintes regras se aplicam:

  • Mesmo nome.Cada versão sobrecarregada deve usar o mesmo nome do procedimento.

  • Assinatura diferente.Cada versão sobrecarregada deve ser diferente de todas as outras versões sobrecarregadas em pelo menos um dos seguintes aspectos:

    • Número de parâmetros

    • Ordem dos parâmetros

    • Tipos de dados dos parâmetros

    • Número de parâmetros de tipo (para um procedimento genérico)

    • Tipo de retorno (somente para um operador de conversão)

    Junto com o nome do procedimento, os itens anteriores são coletivamente chamados de assinatura do procedimento.Quando você chama um procedimento sobrecarregado, o compilador usa a assinatura para verificar se a chamada corretamente coincide com a definição.

  • Itens não faz parte da assinatura.Você não pode sobrecarregar um procedimento sem variando a assinatura.Em particular, você não pode sobrecarregar um procedimento, variando apenas um ou mais dos seguintes itens:

    • Palavras-chave modificadores de procedimento, como Public, Shared, e Static

    • Nomes de parâmetro ou tipo de parâmetro

    • Restrições de parâmetro de tipo (para um procedimento genérico)

    • Palavras-chave modificadoras de parâmetros (como ByRef e Optional)

    • Se ele retorna um valor

    • O tipo de dado do valor de retorno (exceto para um operador de conversão)

    Os itens da lista anterior não são parte da assinatura.Embora você não pode usá-los para diferenciar entre versões sobrecarregadas, você pode variá-los entre as versões sobrecarregadas que corretamente são diferenciadas por suas assinaturas.

  • Ligação tardia argumentos.Se você pretende passar uma variável de objeto acoplado atrasada para uma versão sobrecarregada, você deve declarar o parâmetro apropriado como Object.

Várias versões de um procedimento

Suponha que você está escrevendo um Sub procedimento para lançar uma transação contra o saldo do cliente e você deseja ser capaz de se referir ao cliente pelo nome ou pelo número de conta.Para acomodar isso, você pode definir duas diferentes Sub procedimentos, como no exemplo a seguir:

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

s3tbathb.collapse_all(pt-br,VS.110).gifVersões sobrecarregadas

Uma alternativa é sobrecarregar o nome de um único procedimento.Você pode usar o Sobrecargas (Visual Basic) palavra-chave para definir uma versão do procedimento para cada lista de parâmetros, da seguinte maneira:

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

s3tbathb.collapse_all(pt-br,VS.110).gifSobrecargas adicionais

Se você quisesse também aceita um valor da transação em um Decimal ou Single, você poderia sobrecarregar ainda mais post para permitir esta variação.Se você já fez isso para cada uma das sobrecargas no exemplo anterior, tem quatro Sub procedimentos, tudo isso com o mesmo nome mas com quatro assinaturas diferentes.

Vantagens da sobrecarga

A vantagem de sobrecarga de um procedimento é na flexibilidade da chamada.Para usar o post procedimento declarado no exemplo anterior, o código de chamada pode obter a identificação do cliente como um String ou um Integere então chamar o mesmo procedimento em ambos os casos.O exemplo a seguir ilustra isso:

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 também

Tarefas

Como: definir várias versões de um procedimento (Visual Basic)

Como: chamar um procedimento sobrecarregado (Visual Basic)

Como: um procedimento que usa parâmetros opcionais (Visual Basic) de sobrecarga.

Como: um procedimento que leva a um número indefinido de parâmetros (Visual Basic) de sobrecarga.

Referência

Sobrecargas (Visual Basic)

Conceitos

Procedimentos no Visual Basic

Considerações sobre a sobrecarga de procedimentos (Visual Basic)

Resolução de sobrecarga (Visual Basic)

Tipos genéricos em Visual Basic (Visual Basic)