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
Considerações sobre Procedimentos de Sobrecarga
Resolução de Sobrecarregamento
Tipos genéricos no Visual Basic