Compartilhar via


Sobrecarga de procedimento (Visual Basic)

Sobrecarga um procedimento significa que a definição em várias versões, usando o mesmo nome mas diferentes parâmetro listas. The purpose of overloading is to define several closely related versions of a procedure without having to differentiate them by name. Para fazer isso variando a lista de parâmetro .

Regras de sobrecarga.

Quando você sobrecarga um procedimento, as seguintes regras aplicar:

  • O mesmo Nome. Cada versão de sobrecarregada deve usar o mesmo nome do procedimento .

  • Assinatura diferente. Cada versão de sobrecarregada deve diferir 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 procedimentogenérico)

    • Retornar o tipo (somente para uma conversão de operador)

    Junto com o nome do procedimento , os itens anteriores são coletivamente chamados de assinatura do procedimento. Quando você chamar um procedimentode 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 sobrecarga um procedimento sem a assinaturade variação. Em particular, você não pode sobrecarga um procedimento , variando apenas um ou mais dos seguintes itens:

    • Procedure modifier keywords, such as Public, Shared, and Static

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

    • Tiporestrições deparâmetro (para um procedimentogenérico)

    • Parameter modifier keywords, such as ByRef and Optional

    • Se ele retorna um valor

    • The data type of the return value (except for a conversion operator)

    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 versões sobrecarregadas, corretamente são diferenciadas por suas assinaturas.

  • Atrasado-argumentos acoplados. Se você pretende passar uma tarde limite objeto variável para uma versãode sobrecarregada, você deve declarar o parâmetro apropriado como Object.

Várias versões de um procedimento

Suponha que você está escrevendo um Suboprocedimento para lançar uma transação contra o saldo de um clientee 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

Versões sobrecarregadas

Uma alternativa é sobrecarga um nome único procedimento . Você pode usar o Sobrecargas (Visual Basic) palavra-chave para definir uma versão do procedimento para cada lista de parâmetro , como segue:

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

Sobrecargas adicionais

Se quiser aceitar o valor de uma transação em um Decimal ou Single, poderia ser mais sobrecarga post para permitir esta variação. Se você já fez isso para cada uma das sobrecargas no exemplo anterior, você teria quatro Sub procedimentos, todos com o mesmo nome mas com quatro assinaturas diferentes.

Vantagens da sobrecarga

The advantage of overloading a procedure is in the flexibility of the call. 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 cada caso. 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: Sobrecarregar um procedimento que recebe parâmetros opcionais (Visual Basic)

Como: Sobrecarregar um procedimento que recebe um número indefinido de parâmetros (Visual Basic)

Referência

Sobrecargas (Visual Basic)

Conceitos

Procedimentos no Visual Basic

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

Resolução de sobrecarga (Visual Basic)

Tipos genéricos no Visual Basic (Visual Basic)