Methoden zijn functies die in een klasse zijn gedefinieerd. C# ondersteunt rijke parameterfuncties — optionele/benoemde argumenten, ref/out/in modifiers, arrays — en (meerdere methoden met dezelfde naam maar verschillende parameters).
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
Methoden specificeren een retourtype, naam en parameters. Standaardparameters maken argumenten optioneel, en benoemde argumenten laten je doorgeven op naam (duidelijker, kan optionele elementen overslaan).
// 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 wordt veel gebruikt in het TryParse patroon (retourneren van een succesmarkeering plus het resultaat veilig); ref stelt je in staat de variabele van de aanroeper aan te passen; in geeft grote structs efficiënt door zonder te kopiëren.
// 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
Overloading stelt meerdere methoden in staat dezelfde naam te delen, onderscheiden door parametertypen/aantal — de compiler selecteert de overeenkomende. params accepteert een variabel aantal argumenten.
Methoden zijn de bouwstenen van gedrag in C#, en inzicht in hun rijke parameterfuncties is belangrijk voor het schrijven van flexibele, expressieve code.
Weten hoe je methoden defineert (inclusief beknopte expression-bodied syntaxis), standaard- en benoemde parameters gebruikt (voor optionele argumenten en leesbare oproepen), en method overloading toepast (dezelfde naam, verschillende parameters — voor intuïtieve API's die verschillende argumenttypen verwerken) is alledaagse kennis.
De parametermodifiers zijn bijzonder belangrijk om te begrijpen: out wordt veel gebruikt in het alomtegenwoordige TryParse patroon (int.TryParse(s, out var result) — veilig retourneren van een succesmarkeering en resultaat zonder exceptions, een gemeenschappelijk, idiomatisch C# patroon), ref stelt je in staat de variabele van de aanroeper aan te passen, en in geeft grote structs door verwijzing voor prestaties.
Inzicht hierin — methoden, de parameterfuncties (optioneel/benoemd/params), overloading voor flexibele API's, en de ref/out/in modifiers (vooral de out-gebaseerde TryParse idioom) — is fundamenteel voor zowel het schrijven van C# methoden als het gebruiken van de vele .NET API's die afhankelijk zijn van deze functies.
Omdat methoden en hun parameters centraal staan in alle C# code, en omdat functies zoals overloading, optionele parameters en het TryX patroon constant voorkomen, is het beheersen ervan kernkennis die je nodig hebt voor effectieve C# ontwikkeling.