Ce face Metode (static, void, return)
O metodă are un tip returnat (sau void când nu returnează nimic), un nume scris în PascalCase și o listă de parametri. return încheie metoda și trimite valoarea înapoi celui care a apelat-o. Metodele cu un singur rând se pot scrie cu săgeată: static int Dublu(int x) => x * 2;.
În programele cu instrucțiuni de nivel superior (fișierul Program.cs fără clasă Main), metodele declarate direct în fișier sunt funcții locale și se pot apela de oriunde din acel cod. În clase, metodele static se apelează pe tip (Calcul.Tva(100)), iar cele fără static pe un obiect.
Mai multe metode pot avea același nume dacă diferă lista de parametri (supraîncărcare, overloading). Compilatorul alege varianta după tipurile argumentelor.
Parametri
| Parametru | Descriere |
|---|---|
TipReturnat |
int, string, o clasă, Task pentru metode async sau void. |
parametri |
Zero sau mai mulți, separați prin virgulă, fiecare cu tip și nume. |
Ce returnează
Valoarea din return, de tipul declarat; nimic la void.
Exemple
Exemplul 1: Metode statice într-o clasă
Pret are două variante (supraîncărcare): cu sau fără reducere.
Console.WriteLine(Magazin.Pret(200));
Console.WriteLine(Magazin.Pret(200, 50));
Magazin.Afiseaza("Ana");
static class Magazin
{
public static int Pret(int baza) => baza + baza * 19 / 100;
public static int Pret(int baza, int reducere)
{
int cuTva = Pret(baza);
return cuTva - reducere;
}
public static void Afiseaza(string client)
{
Console.WriteLine($"Comanda pentru {client} a fost înregistrată.");
}
}
Rezultat
238
188
Comanda pentru Ana a fost înregistrată.
Exemplul 2: return devreme
return poate apărea de mai multe ori; prima atinsă încheie metoda.
Console.WriteLine(Categorie(5));
Console.WriteLine(Categorie(15));
Console.WriteLine(Categorie(70));
static string Categorie(int varsta)
{
if (varsta < 14)
return "copil";
if (varsta < 18)
return "adolescent";
return "adult";
}
Rezultat
copil
adolescent
adult
Greșeli frecvente
- O metodă cu tip returnat care nu are
returnpe toate drumurile dă eroarea CS0161 (not all code paths return a value). - Apelarea unei metode de instanță pe tip (
Cont.Depune(10)) fără obiect nu se compilează. Creează obiectul cunewsau marchează metodastatic. - Supraîncărcarea după tipul returnat nu e permisă: două metode
Pret(int)care diferă doar prin ce returnează intră în conflict.
Comenzi înrudite
Parametri opționali și argumente numite: Parametrii cu valoare implicită pot lipsi la apel; argumentele numite (nume: valoare) se pot da în orice ordine.ref, out și in: Transmit un argument prin referință: ref îl poate citi și modifica, out trebuie setat de metodă, in este doar pentru citire.params: Permite unei metode să primească oricâte argumente de același tip, separate prin virgulă, fără să creezi tu tabloul.Funcții locale: O funcție declarată în interiorul unei metode, vizibilă doar acolo; poate folosi variabilele metodei, iar cu static nu le poate atinge.