Metode su funkcije definirane u klasi. C# podržava bogate značajke parametara — opcionalne/nazvane argumente, ref/out/in modifikatore, params niza — i (više metoda s istim imenom ali različitim parametrima).
public int Add(int a, int b) => a + b; // expression-bodied (concise)
public string Greet(string name, string greeting = "Hello") // default parameter
{
return $"{greeting}, {name}";
}
Greet("Ann"); // "Hello, Ann"
Greet("Ann", greeting: "Hi"); // named argument
Metode specificiraju tip povratne vrijednosti, ime i parametre. Zadani parametri čine argumente opcionalnima, a nazvani argumenti omogućavaju proslijeđivanje po imenu (jasniji kod, mogu preskočiti opcionalne).
// ref — pass by reference (method can modify the caller's variable)
void Increment(ref int x) { x++; }
int n = 5; Increment(ref n); // n is now 6
// out — for returning multiple values (must be assigned in the method)
bool TryParse(string s, out int result) { result = ...; return true; }
if (int.TryParse("42", out int value)) { } // the common TryX pattern
// in — pass by reference but READ-ONLY (performance for large structs)
void Process(in LargeStruct data) { }
out se često koristi u TryParse obrascu (vraćanje zastavice uspjeha plus rezultat na siguran način); ref omogućava izmjenu varijable pozivaoca; in prosleđuje velike strukture učinkovito bez kopiranja.
// params — variable number of arguments
int Sum(params int[] numbers) => numbers.Sum();
Sum(1, 2, 3, 4); // any number
// OVERLOADING — same name, different parameters
void Print(int x) { }
void Print(string s) { }
void Print(int x, int y) { }
Print(5); // calls the int version — resolved by argument types
Preopterećenje omogućava više metoda s istim imenom, razlikovanih po tipovima/broju parametara — kompajler odabira odgovarajuću. params prihvaća varijabilan broj argumenata.
Metode su gradivni blokovi ponašanja u C#-u, i razumijevanje njihovih bogatih značajki parametara važno je za pisanje fleksibilnog, ekspresivnog koda.
Znanje kako definirati metode (uključujući sažetu sintaksu izražavanja), koristiti zadane i nazvane parametre (za opcionalne argumente i čitljive pozive), te primijeniti preopterećenje metoda (isto ime, različiti parametri — za intuitivne API-je koji rukuju različitim tipovima argumenata) je svakodnevno znanje.
Modifikatori parametara su posebno važni za razumijevanje: out se često koristi u sveprisutnom TryParse obrascu (int.TryParse(s, out var result) — sigurno vraćanje zastavice uspjeha i rezultata bez iznimki, česti, idiomatski C# obrazac), ref omogućava izmjenu varijable pozivaoca, a in prosleđuje velike strukture po referenci zbog performansi.
Razumijevanje tih — metoda, značajki parametara (opcionalni/nazvani/params), preopterećenja za fleksibilne API-je, i ref/out/in modifikatora (posebno out-baziranog TryParse idioma) — temeljno je za pisanje C# metoda i korištenje mnogih .NET API-ja koji se oslanjaju na te značajke.
Budući da su metode i njihovi parametri centralni za sav C# kod, i budući da se značajke poput preopterećenja, opcionalni parametri, i TryX obrazac pojavljuju konstantno, savladavanje njih je temeljna, neophodna znanja za učinkovit C# razvoj.