Il-metodi huma funzjonijiet definiti f'klassi. C# jappoġġja karatteristiċi rikki ta' parametri — argumenti fakultativi/smigħ, ref/out/in modifiers, arrays — u (multipli metodi bl-istess isem iżda parametri differenti).
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
Il-metodi jispeċifikaw tip ta' ritorn, isem, u parametri. Il-parametri default jagħmlu l-argumenti fakultativi, u l-argumenti smigħ jippermettulek tippassa bl-isem (aktar ċar, tista' tiskip l-obbligatorji).
// 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 jintuża b'mod wiesa' fil-pattern TryParse (jirritornu flag ta' suċċess plus ir-riżultat b'mod sigur); ref jippermettu modifikazzjoni tal-varjabbli tal-caller; in jippassa structs kbar b'mod effiċjenti mingħajr kopi.
// 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
L-Overloading jippermetti multipli metodi jaqsmu isem, distinguati minn tipi/numru ta' parametri — il-compiler jagħżel dak li jaqbel. params jaċċetta numru varjabbli ta' argumenti.
Il-metodi huma l-blokki tal-bini tal-imġieba f'C#, u l-fahm ta' karatteristiċi rikki tal-parametri tagħhom huwa importanti għall-kitba ta' kodiċi flessibli u espressiv.
L-għarfien kif tiddefinixxi metodi (inklużi s-sintassi kumpatta expression-bodied), tuża parametri default u smigħ (għal argumenti obbligatorji u sejħat leggibili), u applika method overloading (istess isem, parametri differenti — għal APIs intuwittivi li jmexxu tipi differenti ta' argumenti) huwa għarfien ta' kuljum.
Il-parameter modifiers huma partikolarment importanti biex tifhem: out jintuża b'mod wiesa' fil-pattern ubiquitous ta' TryParse (int.TryParse(s, out var result) — jirritornu b'mod sigur flag ta' suċċess u riżultat mingħajr eċċezzjonijiet, pattern komuni u idiomatiċu ta' C#), ref jimmaniġġja l-modifikazzjoni tal-varjabbli tal-caller, u in jippassa structs kbar b'referenza għall-prestazzjoni.
L-fahm ta' dawn — metodi, il-karatteristiċi tal-parametri (fakultativi/smigħ/params), overloading għal APIs flessibli, u l-modifiers ref/out/in (speċjalment l-idioma TryX bbażat fuq out) — huwa fundamentali għall-kitba ta' metodi C# u l-użu tal-APIs .NET ħafna li jiddependu fuq dawn il-karatteristiċi.
Billi l-metodi u l-parametri tagħhom huma ċentrali għal kodiċi C# kollu, u billi karatteristiċi bħal overloading, parametri fakultativi, u pattern TryX jidhru kostantement, l-mastrija tagħhom hija għarfien assolut u essenzjali għall-iżvilupp effettiv ta' C#.