Formazione
Modulo
Chiamare i metodi dalla libreria di classi .NET usando C# - Training
Usare le funzionalità nella libreria di classi .NET chiamando metodi che restituiscono valori, accettano parametri di input e altro ancora.
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
L'overload è la creazione di più routine, costruttori di istanza o proprietà in una classe con lo stesso nome ma tipi di argomento diversi.
L'overload è particolarmente utile quando il modello a oggetti impone di usare nomi identici per le routine che operano su tipi di dati diversi. Ad esempio, una classe che può visualizzare diversi tipi di dati potrebbe avere routine di Display
simili alle seguenti:
Overloads Sub Display(ByVal theChar As Char)
' Add code that displays Char data.
End Sub
Overloads Sub Display(ByVal theInteger As Integer)
' Add code that displays Integer data.
End Sub
Overloads Sub Display(ByVal theDouble As Double)
' Add code that displays Double data.
End Sub
Senza l'overload, sarebbe necessario creare nomi distinti per ogni routine, anche se eseguono la stessa operazione, come illustrato di seguito:
Sub DisplayChar(ByVal theChar As Char)
' Add code that displays Char data.
End Sub
Sub DisplayInt(ByVal theInteger As Integer)
' Add code that displays Integer data.
End Sub
Sub DisplayDouble(ByVal theDouble As Double)
' Add code that displays Double data.
End Sub
L'overload semplifica l'uso di proprietà o metodi perché offre una scelta di tipi di dati che possono essere usati. Ad esempio, il metodo Display
con overload descritto in precedenza può essere chiamato con una delle righe di codice seguenti:
' Call Display with a literal of type Char.
Display("9"c)
' Call Display with a literal of type Integer.
Display(9)
' Call Display with a literal of type Double.
Display(9.9R)
In fase di esecuzione, Visual Basic chiama la routine corretta in base ai tipi di dati dei parametri specificati.
Per creare un membro con overload per una classe, aggiungere due o più proprietà o metodi con lo stesso nome. Ad eccezione dei membri derivati con overload, ogni membro con overload deve avere elenchi di parametri diversi e gli elementi seguenti non possono essere usati come funzionalità di differenziazione quando si esegue l'overload di una proprietà o di una routine:
Modificatori, come ByVal
o ByRef
, che si applicano a un membro o parametri del membro.
Nomi di parametri
Tipi restituiti di routine
La parola chiave Overloads
è facoltativa durante l'overload, ma se un membro con overload usa la parola chiave Overloads
, anche tutti gli altri membri con overload con lo stesso nome devono specificare questa parola chiave.
Le classi derivate possono eseguire l'overload di membri ereditati con membri che hanno parametri e tipi di parametro identici, un processo noto come shadowing per nome e firma. Se viene usata la parola chiave Overloads
durante lo shadowing per nome e firma, verrà usata l'implementazione del membro della classe derivata anziché l'implementazione della classe di base e tutti gli altri overload per tale membro saranno disponibili per le istanze della classe derivata.
Se la parola chiave Overloads
viene omessa quando si esegue l'overload di un membro ereditato con un membro che ha parametri e tipi di parametro identici, l'overload viene chiamato shadowing per nome. Lo shadowing per nome sostituisce l'implementazione ereditata di un membro e rende tutti gli altri overload non disponibili per le istanze della classe derivata e dei relativi discendenti.
I modificatori Overloads
e Shadows
non possono essere usati entrambi con la stessa proprietà o metodo.
Nell'esempio seguente vengono creati metodi con overload che accettano una rappresentazione String
o Decimal
di un importo in dollari e restituiscono una stringa contenente l'imposta sulle vendite.
Aprire un nuovo progetto e aggiungere una classe denominata TaxClass
.
Aggiungere il codice seguente alla classe TaxClass
.
Public Class TaxClass
Overloads Function TaxAmount(ByVal decPrice As Decimal,
ByVal TaxRate As Single) As String
TaxAmount = "Price is a Decimal. Tax is $" &
(CStr(decPrice * TaxRate))
End Function
Overloads Function TaxAmount(ByVal strPrice As String,
ByVal TaxRate As Single) As String
TaxAmount = "Price is a String. Tax is $" &
CStr((CDec(strPrice) * TaxRate))
End Function
End Class
Aggiungere la routine seguente al modulo.
Sub ShowTax()
' 8% tax rate.
Const TaxRate As Single = 0.08
' $64.00 Purchase as a String.
Dim strPrice As String = "64.00"
' $64.00 Purchase as a Decimal.
Dim decPrice As Decimal = 64
Dim aclass As New TaxClass
'Call the same method with two different kinds of data.
MsgBox(aclass.TaxAmount(strPrice, TaxRate))
MsgBox(aclass.TaxAmount(decPrice, TaxRate))
End Sub
Aggiungere un pulsante al modulo e chiamare la routine ShowTax
dall'evento Button1_Click
del pulsante.
Eseguire il progetto e fare clic sul pulsante nel modulo per testare la routine ShowTax
con overload.
In fase di esecuzione, il compilatore sceglie la funzione con overload appropriata che corrisponde ai parametri usati. Quando si fa clic sul pulsante, il metodo con overload viene chiamato per primo con un parametro Price
che è una stringa e viene visualizzato il messaggio "Price is a String. Tax is $5.12". La seconda volta TaxAmount
viene chiamato con un valore Decimal
e viene visualizzato il messaggio "Price is a Decimal. Tax is $5.12".
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback:
Formazione
Modulo
Chiamare i metodi dalla libreria di classi .NET usando C# - Training
Usare le funzionalità nella libreria di classi .NET chiamando metodi che restituiscono valori, accettano parametri di input e altro ancora.