Share via


Sobrecarga de procedimento

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

Sobrecarga de regras

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

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

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

    • Número de parâmetros

    • Ordem dos parâmetros

    • Tipos de dados dos parâmetros

    • Número de parâmetros (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ê chamar um procedimento sobrecarregado, o compilador usa a assinatura para verificar se a telefonar corretamente coincide com a definição.

  • Itens não parte de assinatura.Não é possível sobrecarga um procedimento sem variando a assinatura.Em particular, você não pode sobrecarga um procedimento, variando apenas um ou mais dos seguintes itens:

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

    • Parâmetro ou um tipo de nomes 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 ela 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á-las para diferenciar entre versões sobrecarregadas, você pode variá-los entre versões sobrecarregadas corretamente são diferenciadas por suas assinaturas.

  • Argumentos atrasado vinculados.Se você tiver a intenção de passar uma variável de objeto limite atrasada para uma versão sobrecarregada, você deve declarar o parâmetro apropriado sistema autônomo Object.

Várias versões de um procedimento

Suponha que você está escrevendo um Sub procedimento para lançar uma transação Equilíbrio do cliente e você deseja poder para se referir ao cliente pelo nome ou pelo número da conta. Para acomodar isso, você pode definir dois diferentes Sub procedimentos, sistema autônomo 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 nome de um único procedimento.Você pode usar o Sobrecargas 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

Overloads adicionais

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

Vantagens de sobrecarga

A vantagem de sobrecarga de um procedimento é na flexibilidade da chamada.Para usar o post procedimento declaradas no exemplo anterior, o código chamador pode obter a identificação do cliente sistema autônomo um String ou um Integere, em seguida, chame o mesmo procedimento em ambos sistema autônomo 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 diversas versões de um procedimento

Como: Chamar um procedimento sobrecarregado

Como: Um procedimento que tem parâmetros opcionais de sobrecarga

Como: Um procedimento que tem um número indefinida de parâmetros de sobrecarga

Conceitos

Procedimentos no Visual Basic

Considerações sobre Procedimentos de Sobrecarga

Resolução de Sobrecarregamento

Tipos genéricos no Visual Basic

Referência

Sobrecargas