Mettiamo di avere un gruppo di istruzioni che, all'interno di una classe, vengono utilizzate diverse volte. sarebbe altamente scomodo riscrivere tutte le volte tali istruzioni. Per questo motivo vengono in aiuto i metodi, i quali all'interno hanno le istruzioni che devono eseguire, poichè basterà una chiamata a tale metodo perchè le istruzioni vengano eseguite.
{
int somma = a+b;
return somma;
}
System.Console(somma(1,3));
Come si può notare un metodo segue la stessa sintassi utilizzata all'inizio quando, scrivendo la semplice classe di visualizzazione di "Ciao mondo", abbiamo usato la dicitura main. Infatto il main è proprio un metodo, il quale viene richiamato dal compilatore alla partenza del programma. Il metodo main, però, come si può notare, portava la dicitura void al posto dell'int. Infatti un metodo può ritornare dei valori (le corrispondenti funzioni in Visual basic), oppure non ritornare nessun valore (le corrispondenti sub in VisualBasic). Quindi per un metodo che non ritorna valori, tipo il main, viene utilizzata la dicitura void prima del nome del metodo, altrimenti il tipo del valore di ritorno. Nel secondo caso bisogna anche ricordarsi di scrivere l'istruzione return alla fine del metodo col valore da ritornare (vedi l'esempio). Come si può notare, sempre dall'esempio, un metodo può ricevere anche dei parametri, i quali verranno utilizzati dal metodo per eseguire le operazioni. Un parametro può essere passato per valore, il quale è la tipologia di passaggio di default, nel quale le variabili passate non vengono modificate dal metodo stesso, e per riferimento, utilizzando la parola chiave ref, permettendo così al metodo di modificare le variabili passate.
Quando vengono aperte le parentesi grafe e quindi chiuse, quello che sta all'interno viene definito ambito. Quindi può esserci un ambito per la classe e uno per i metodi. Tutte le variabili che vengono istanziate all'interno di un metodo valgono solo nell'ambito del metodo, mentre quelle istanziate all'interno della classe, ma fuori dai metodi, hanno validità globale all'interno della classe, quindi possono essere usate anche all'interno dei metodi.
All'interno dell'ambito di una classe non possono esistere due metodi con nome uguale, come per le variabili, e ovviamente un metodo non può avere lo stesso nome di una variabile. Esiste però una funzionalità che permette la scrittura di due metodi con nome uguale: l'Overload. Ciò avviene scrivendo due metodi con lo stesso nome ma che si differenziano per il numero dei parametri e/o per il tipo del parametro. Facciamo un esempio:
{
int iSomma;
public static void somma (int a, int b)
{
somma = a+b;
}
public static void somma (int a, int b, int c)
{
somma = a+b+c;
}
public static void main()
{
somma(3,5);
System.Console (iSomma);
somma(5,7,9);
System.Console (iSomma);
}
}
Come si può notare dall'esempio esistono due metodi con lo stesso nome (somma) ma hanno il numero di parametri diverso. Si può anche notare come ci sia la variabile globare iSomma, la quale viene utilizzata dai deu metodi per scrivere il risultato dell'operazione. Ciò non sarebbe stato possibile, ad esempio, se la variabile veniva dichiarata nel primo metodo, utilizzarla poi nel secondo metodo.



