This article has been localized into Italian by the community.
Funzioni
Una funzione ti permette di incapsulare una parte di codice e chiamarlo da altre parti del tuo codice. Molto presto potresti imbatterti in una situazione in cui devi ripetere una parte di codice, da più posti, ed è qui che entrano in gioco le funzioni. In C#, sono sostanzialmente dichiarate in questo modo:
<visibility> <return type> <name>(<parameters>)
{
<function code>
}
Per chiamare una funzione, scrivi semplicemente il suo nome, una parentesi aperta, quindi i parametri, se ce ne sono, e quindi una parentesi chiusa, come questa:
DoStuff();
Ecco un esempio della nostra funzione DoStuff ():
public void DoStuff()
{
Console.WriteLine("I'm doing something...");
}
La prima parte, "public", è "visibility" ed è facoltativa. Se non lo definisci, la funzione sarà "private". Maggiori informazioni a riguardo più avanti. Il prossimo è il tipo da restituire. Potrebbe essere qualsiasi tipo valido in C#, o come lo abbiamo fatto qui, nullo. Void significa che questa funzione non restituisce assolutamente nulla. Inoltre, questa funzione non accetta parametri, come puoi vedere dal set vuoto di parentesi, quindi in realtà è solo un po' noioso. Cambiamolo:
public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
return result;
}
Abbiamo cambiato quasi tutto. La funzione ora restituisce un intero, prende due parametri (entrambi numeri interi) e invece di stampare qualcosa, esegue un calcolo e quindi restituisce il risultato. Ciò significa che possiamo sommare due numeri da vari punti nel nostro codice, semplicemente richiamando questa funzione, invece di dover scrivere il codice di calcolo ogni volta. Mentre non risparmiamo tanto tempo e sforzi in questo piccolo esempio, farai meglio a credere che imparerai ad amare le funzioni, man mano che usi C#. Questa funzione è chiamata così:
int result = AddNumbers(10, 5);
Console.WriteLine(result);
Come accennato, questa funzione restituisce effettivamente qualcosa, e deve, perché abbiamo detto a C# che deve farlo. Quando dichiariamo qualsiasi altra cosa al posto di void come un tipo return, ci stiamo costringendo a restituire qualcosa. Puoi provare a rimuovere la linea di return dall'esempio sopra, e vedere il compilatore lamentarsi:
'AddNumbers(int, int)': not all code paths return a value
Il compilatore ci sta ricordando che abbiamo una funzione che non restituisce qualcosa, sebbene gielo abbiamo dichiarato. E il compilatore è abbastanza intelligente! Invece di rimuovere la linea, prova qualcosa del genere:
public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
if(result > 10)
{
return result;
}
}
Vedrai esattamente lo stesso errore - ma perché? Perché non vi è alcuna garanzia che la nostra istruzione if valuterà in true e la linea di return venga eseguita. Puoi risolvere questo problema avendo una seconda, istruzione predefinita di return alla fine:
public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
if(result > 10)
{
return result;
}
return 0;
}
Questo risolverà il problema che abbiamo creato per noi stessi e mostrerà anche che possiamo avere più di un'istruzione return nella nostra funzione. Non appena viene raggiunta un'istruzione return, la funzione viene lasciata e nessun altro codice viene eseguito. In questo caso, significa che finché il risultato è superiore a 10, il "return 0" non viene mai raggiunto.
This article has been deprecated!
This article has been re-organized and updated to better match the rest of the tutorial.
We suggest that you read this article instead: Methods (functions)