Casino online











Mercato forex






A19. Parametri opzionali e indefiniti


Parametri opzionali
I parametri opzionali, come suggerisce il nome, sono parametri che non devono essere per forza passati a un metodo, ma si può decidere di ometterli. Se si sceglie questa opzione, essi assumeranno un valore predefinito che viene impostato durante la loro dichiarazione. La sintassi è semplice:
Sub/Function [Nome metodo](Optional ByVal/ByRef [Nome parametro] As _ 
  [Tipo] = [Valore predefinito])
  '...
End Sub/Function 
Non è possibile omettere il valore predefinito nella dichiarazione, altrimenti il compilatore non saprebbe quale impostare, ad esempio:
Function Moltiplica(ByVal X As Int32, ByVal Y As Int32, _ 
  Optional ByVal Z As Int32 = 0) As Int32
  Return X * Y + Z
End Function 
Questa semplice funzione moltiplica x per y, e quindi vi aggiunge Z, che di default è 0. Se Z viene specificato, verrà aggiunto al prodotto, altrimenti il suo valore sarà ininfluente (0).


Parametri indefiniti
Questo particolari tipo di parametri non rappresenta un solo elemento, ma bensì una collezione di elementi: infatti, si specifica un parametro come indefinito quando non si sa a priori quanti parametri il metodo richiederà. A sostegno di questo fatto, i parametri indefiniti sono dichiarati come array, usando la keyword ParamArray, in questo modo:
Sub/Function [Nome metodo](ByVal/ByRef ParamArray [Nome parametro]() _ 
  As [Tipo])
  '...
End Sub/Function 
Come si è potuto notare, vicino a [Nome parametro indefinito] c'è una coppia di parentesi, il che sta a indicare che quello è a tutti gli effetti un array di elementi. Ecco un semplice esempio:
Module Esempio
    Function Somma(ByVal ParamArray Valori() As Int32) As Int32
        Dim Temp As Int32 = 0

        For I As Int16 = 0 To UBound(Valori)
            Temp += Valori(I)
        Next

        Return Temp
    End Function
    
    Sub Main()
        Dim I As Int32
        Dim V() As Int32 = {1, 3, 5, 7, 9}
        
        'Somma due valori
        I = Somma(1, 2)
        'Somma quattro valori
        I = Somma(3, 90, 67, 23)
        'Somma un array di cinque valori
        I = Somma(V)
    End Sub
End Module 
Prima di tutto mi sembra di dover spiegare la funzione UBound. Essa accetta come parametro un valore di tipo array e ne restituisce l'indice massimo. Esiste anche la controparte LBound che restituisce l'indice minimo (ossia 0): entrambi sono abbreviazioni di Upper Bound e Lower Bound, ossia margine superiore e margine inferiore. La funziona Somma accetta un numero indefinito di parametri, che vanno immagazzinati sottoforma dell'array Valori. Come si vede dal sorgente, si possono specificare sia più valori che un vettore di valori come parametri di Somma.




 

The Totem's Lair - Copyright (C) 2009
È vietata la riproduzione sia totale che parziale del sito.