In questo articolo descrivo le parole chiave che è possibile usare quando si dichiarono i parametri dei metodi ed il loro significato.
1. Il parametro di metodo ref
Nella programmazione a oggetti è molto comune, ovviamente, lavorare con questi e passarli a dei metodi. E’ importante sottolineare che gli oggetti sono sempre passati come referenza, mai per valore. Per i tipi semplici di C#, come le structs e gli enum così invece non è, infatti tali dati vengono passati per valore. La parola chiave ref di C# permette di indicare che il parametro in ingresso a cui questa è associata deve essere passato per riferimento e non per valore. A differenza di out, il parametro indicato come ref deve essere inizializzato prima di essere passato
La parola chiave ref deve essere usata sia nella dichiarazione degli argomenti di un metodo, che durante la chiamata di questo ultimo.
2. Il parametro di metodo out
Spesso quando devo chiamare un metodo che va a modificare lo stato interno di un oggetto, questo oggetto viene creato in precedenza e passo al metodo il riferimento a tale oggetto.
Qualora dovessi creare un nuovo oggetto all’interno di un metodo e poi fornirlo all’esterno, il modo migliore è utilizzare il return
del metodo.
Se invece voglio creare un metodo che mi ritorni più di un oggetto (eventualità che, nella buona programmazione, è piuttosto rara) e sono impossibilitato ad istanziare gli oggetti in questione prima dell’effettiva chiamata al metodo, devo utilizzare la parola chiave out.
Solitamente, il compilatore C# non permette di passare ad un metodo il riferimento a variabili dichiarate ma non inizializzate, indicare out prima di un parametro indica al compilatore che l’inizializzazione della variabile a cui è riferita è resposabilità del metodo chiamante, il compilatore si può quindi “fidare” e passare ad un metodo il riferimento ad una variabile non ancora inizializzata.
Analogamente a ref, devo indicarla sia nella lista dei parametri che nella chiamata al metodo.
3. Il parametro di metodo params
Questo modificatore può essere applicato solo all’ultimo parametro di un metodo specifica che tale metodo può essere chiamato con un qualsiasi numero di parametri con quel tipo specifico. Un esempio preso dalla documentazione ufficiale è il seguente