A metódusok egy osztályban definiált függvények. A C# gazdag paraméter-funkciókat támogat — opcionális/megnevezett argumentumok, ref/out/in módosítók, tömbök — és (több metódus azonos névvel, de eltérő paraméterekkel).
paramspublic 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
A metódusok megadják a visszatérési típust, nevet és paramétereket. Az alapértelmezett paraméterek az argumentumokat opcionálissá teszik, a megnevezett argumentumok pedig név szerint való átadást teszik lehetővé (érthetőbb, kihagyhatók az opcionálisak).
// 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) { }
Az out széles körben használatos a TryParse mintaban (egy siker jelzőt és az eredményt biztonságosan visszaadva); a ref lehetővé teszi a hívó változójának módosítását; az in nagyobb strukturákat hatékonyan ad át másolás nélkül.
// 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
Az overloading lehetővé teszi több metódusnak, hogy közösen használjon egy nevet, megkülönböztetett paraméter típusok/szám alapján — a fordító kiválasztja a megfelelőt. A params tetszőleges számú argumentumot fogad.
A metódusok a C# viselkedésének alapegységei, és a gazdag paraméter-funkcióik megértése fontos a rugalmas, kifejező kód írásához.
A metódusok definiálásának ismerete (beleértve a tömör expression-bodied szintaxist), az alapértelmezett és megnevezett paraméterek használata (opcionális argumentumokra és olvasható hívásokra), valamint a metódus overloading alkalmazása (azonos név, eltérő paraméterek — intuitív API-khoz, amelyek különböző argumentumtípusokat kezelnek) napi szintű tudás.
A paraméter módosítók különösen fontosak: az out széles körben használatos az mindent átható TryParse mintaban (int.TryParse(s, out var result) — egy siker jelzőt és eredményt biztonságosan visszaadva kivételek nélkül, a C# gyakori, idiomatikus mintája), a ref lehetővé teszi a hívó változójának módosítását, és az in nagyobb strukturákat referencia alapján adja át a teljesítmény érdekében.
Ezek megértése — metódusok, paraméter-funkciók (opcionális/megnevezett/params), overloading rugalmas API-khoz, és a ref/out/in módosítók (különösen az out-alapú TryParse idiom) — alapvető a C# metódusok írásához és a számos .NET API-hoz, amelyek ezekre az funkciókra támaszkodnak.
Mivel a metódusok és paraméteraik központiak az összes C# kódban, és mivel az olyan funkciók, mint az overloading, opcionális paraméterek és a TryX minta folyamatosan megjelennek, ezek elsajátítása alaptudás, amelyet tudni kell az effektív C# fejlesztéshez.