Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Sobrecarregar um procedimento significa defini-lo em várias versões, usando o mesmo nome, mas diferentes listas de parâmetros. O objetivo da sobrecarga é definir várias versões estreitamente relacionadas de um procedimento sem ter que diferenciá-las pelo nome. Para fazer isso, varie a lista de parâmetros.
Regras de sobrecarga
Quando você sobrecarrega 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 de todas as outras versões sobrecarregadas em pelo menos um dos seguintes aspetos:
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 (apenas para um operador de conversão)
Juntamente 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 corresponde corretamente à definição.
Itens que não fazem parte da assinatura. Não é possível sobrecarregar um procedimento sem variar a assinatura. Em particular, você não pode sobrecarregar um procedimento variando apenas um ou mais dos seguintes itens:
Palavras-chave modificadoras de procedimento, como
Public,SharedeStaticNomes de parâmetros ou tipos de parâmetros
Restrições de parâmetros de tipo (para um procedimento genérico)
Palavras-chave modificadoras de parâmetros, como
ByRefeOptionalSe ele retorna um valor
O tipo de dados do valor de retorno (exceto para um operador de conversão)
Os itens da lista anterior não fazem parte da assinatura. Embora não seja possível usá-los para diferenciar entre versões sobrecarregadas, você pode variá-los entre versões sobrecarregadas que são devidamente diferenciadas por suas assinaturas.
Late-Bound Argumentos. Se você pretende passar uma variável de objeto vinculado tardiamente para uma versão sobrecarregada, você deve declarar o parâmetro apropriado como Object.
Várias versões de um procedimento
Suponha que você esteja escrevendo um Sub procedimento para lançar uma transação no saldo de um cliente e queira ser capaz de se referir ao cliente pelo nome ou pelo número da conta. Para acomodar isso, você pode definir dois procedimentos diferentes Sub , 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 é sobrecarregar um único nome de procedimento. Você pode usar a palavra-chave Overloads 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
Sobrecargas adicionais
Se você também quisesse aceitar um valor de transação em qualquer um Decimal ou Single, você poderia sobrecarregar post ainda mais para permitir essa variação. Se você fizesse isso com cada uma das sobrecargas no exemplo anterior, teria quatro Sub procedimentos, todos com o mesmo nome, mas com quatro assinaturas diferentes.
Vantagens da sobrecarga
A vantagem de sobrecarregar um procedimento está na flexibilidade da invocação. Para usar o procedimento declarado post no exemplo anterior, o código de chamada pode obter a identificação do cliente como um String ou um Integere, em seguida, 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
Ver também
- Procedimentos
- Como: Definir várias versões de um procedimento
- Como chamar um procedimento sobrecarregado
- Como: Sobrecarregar um procedimento que usa parâmetros opcionais
- Como: Sobrecarregar um procedimento que leva um número indefinido de parâmetros
- Considerações na Sobrecarga de Procedimentos
- Resolução de sobrecarga
- Sobrecargas
- Tipos genéricos no Visual Basic