Programmare in C# – Le funzioni e i metodi
Funzioni e Valori di Ritorno in C#
A volte ci capita di aver necessità di nuove funzioni, funzioni di calcoli, verifiche o procedure ripetute.
Una funzione ci aiuta incredibilmente nel nostro programma facendoci risparmiare migliaia di righe di codice. Sopratutto quando abbiamo necessità di eseguire codici ripetuti ma in diverse situazioni con risultati diversi. Una funzione svolge appunto questo questo compito.
Andiamo ad analizzare la struttura di una funzione.
private <tipo> <nome_funzione> (<tipo> <variabile>) { return <valore> }
Facciamo un esempio in linguaggio “umano”.
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’ soporifero. 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, farete meglio a credere che imparerete ad amare le funzioni, man mano che usa 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. 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; } }
Vedrete 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. Potrete 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.
I metodi
I metodi vengono dichiarati in class
o struct
specificando:
- Un livello di accesso facoltativo, ad esempio
public
oprivate
. Il valore predefinito èprivate
. - Modificatori facoltativi, ad esempio
abstract
osealed
. - Il valore restituito o
void
se il metodo non ha alcun valore. - Nome del metodo.
- Tutti i parametri del metodo. I parametri del metodo vengono racchiusi tra parentesi e separati da virgole. Le parentesi vuote indicano che il metodo non richiede parametri.
Queste parti costituiscono la firma del metodo.
Ho una classe che si chiama Eroe, e questo eroe deve eseguire un tipo ben determinato di azione.
using System; public class Eroe { // Call with an int variable. int force = 4; int staminiaA = Square(force); // Il nostro eroe deve attaccare public void Attack(string saidAttack) { Console.WriteLine(saidAttack); } }
In questo modo, una volta chiamata la funzione Attack("Il mio personaggio attacca")
, vedremo sulla console il messaggio scelto sulla console.
Molto più spesso, le funzioni in una classe, rispetto al linguaggio php, vendono chiamate “metodi”.
Esattamente come la funzione, un metodo è un blocco di codice che contiene una serie di istruzioni. Un programma fa in modo che le istruzioni vengano eseguite chiamando il metodo e specificando gli argomenti del metodo obbligatori. In C#, ogni istruzione eseguita viene attuata nel contesto di un metodo. Il metodo Main
è il punto di ingresso per ogni applicazione C# e viene chiamato da Common Language Runtime (CLR) quando viene avviato il programma.
Per quanto riguarda tutte in queste informazioni riguardanti funzioni e metodi in C#, non vi preoccupate, faremo degli esempi pratici a breve durante il corso dedicato a Unity.
Ricordatevi sempre che lo sviluppo è una forma d’arte.
I nostri corsi : https://www.develop4fun.it/premium-corsi-online-in-abbonamento
▼ SEGUICI SU ▼
» Facebook per il Web e corsi online: https://www.facebook.com/developforfun
» Facebook di D4F Games: https://www.facebook.com/d4fgames
» Instagram per il Web e corsi online: https://www.instagram.com/develop4fun
» Instagram di D4F Games: https://www.instagram.com/d4f_games
» Twitter per il Web e corsi online: https://twitter.com/Develop4fun
» Twitter di D4F Games: https://twitter.com/D4fGames
» VISITA IL NOSTRO SITO WEB: https://www.develop4fun.it/
» ISCRIVITI SUBITO AL NOSTRO CANALE: https://www.youtube.com/channel/UCZ4dhshzpVbbRPVuL9TNH4Q