Metode so funkcije definirane v razredu. C# podpira bogate značilnosti parametrov — opcijski/poimenovani argumenti, ref/out/in modifikatorji, params polja — in (več metod z istim imenom, vendar drugačnimi parametri).
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 določajo vrsto povratne vrednosti, ime in parametre. Privzeti parametri naredijo argumente opcijske, poimenovani argumenti pa vam omogočajo prehajanje po imenu (jasnejše, lahko preskočite opcijske).
// 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 pogosto uporabljajo v TryParse vzorcu (vrnitev zastavice uspeha in rezultata varno); ref omogoča spreminjanje spremenljivke klicatelja; in prosledi velike strukture učinkovito brez 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
Preobremenjevanje omogoča več metod, ki si delijo ime, razlikovane po vrstah/številu parametrov — prevajalnik izbere ujemajoče se. params sprejme spremenljivo število argumentov.
Metode so gradniki vedenja v C# in razumevanje njihovih bogatih značilnosti parametrov je pomembno za pisanje prožnega in izrazitega koda.
Znanje, kako definirati metode (vključno z jedrnato sintakso z izrazom), uporabiti privzete in poimenovane parametre (za opcijske argumente in berljive klice) in uporabiti preobremenjevanje metod (isto ime, različni parametri — za intuitivne API-je, ki obdelujejo različne vrste argumentov) je vsakdanje znanje.
Modifikatorji parametrov so še posebej pomembni za razumevanje: out se pogosto uporablja v vseprisotnem TryParse vzorcu (int.TryParse(s, out var result) — varno vrnitev zastavice uspeha in rezultata brez izjem, pogost, idiomatičen C# vzorec), ref omogoča spreminjanje spremenljivke klicatelja in in prosledi velike strukture po sklicu za učinkovitost.
Razumevanje teh — metode, značilnosti parametrov (opcijski/poimenovani/params), preobremenjevanje za prožne API-je in ref/out/in modifikatorje (zlasti idiom, osnovan na out — TryParse) — je temeljno za pisanje C# metod in uporabo številnih .NET API-jev, ki se zanašajo na te značilnosti.
Ker so metode in njihovi parametri osrednji za vse C# kode in ker se značilnosti, kot so preobremenjevanje, opcijski parametri in vzorec TryX, pojavljajo nenehno, je obvladovanje njihove uporabe temeljno, nujno potrebno znanje za učinkovito razvoj v C#.