C# Methoden: Definieren, Aufrufen, Rekursion & Parameterübergabe
Was ist eine Methode?
Methoden definieren
Syntax:
<Zugriffsmodifizierer> <Rückgabetyp> <Methodenname>(Parameterliste)
{
// Methodenkörper
}
Elemente einer Methode
- Zugriffsmodifizierer – Sichtbarkeit (
public,private, …) - Rückgabetyp – Datentyp des Rückgabewerts;
void= kein Rückgabewert - Methodenname – Eindeutiger Bezeichner, case-sensitive
- Parameterliste – Typ, Reihenfolge, Anzahl der Parameter (optional)
- Methodenkörper – Anweisungen zur Aufgabenerfüllung
Beispiel: Maximum zweier Zahlen
public int FindMax(int num1, int num2)
{
int result;
if (num1 > num2) result = num1;
else result = num2;
return result;
}
Methoden aufrufen
Über Instanz der Klasse (bei Instanzmethoden) oder über Klassennamen (bei static-Methoden).
NumberManipulator n = new NumberManipulator();
int ret = n.FindMax(100, 200); // Aufruf
Console.WriteLine("Max: " + ret); // 200
Rekursive Methoden
Eine Methode ruft sich selbst auf. Klassisches Beispiel: Fakultät.
public int Factorial(int num)
{
if (num == 1) return 1;
return Factorial(num - 1) * num;
}
// Aufruf
Console.WriteLine(n.Factorial(6)); // 720
Wichtig: Basisfall (Abbruchbedingung) zwingend erforderlich, um StackOverflow zu vermeiden.
Parameterübergabe
| Mechanismus | Beschreibung | Schlüsselwort |
|---|---|---|
| Wertparameter (Call by Value) | Kopie des Werts; Änderungen wirken nicht nach außen. | (keines) |
| Referenzparameter | Referenz auf Speicherort; Änderungen wirken auf Original. | ref |
| Ausgabeparameter | Für Rückgabe zusätzlicher Werte; muss in Methode zugewiesen werden. | out |
Beispiele
// Wertparameter
void ByValue(int x) { x = 10; }
// Referenzparameter
void ByRef(ref int x) { x = 10; }
// Ausgabeparameter
void ByOut(out int x) { x = 10; }
// Aufruf
int a = 5;
ByValue(a); // a bleibt 5
ByRef(ref a); // a wird 10
ByOut(out a); // a wird 10 (vorheriger Wert irrelevant)
Modern (C# 7+): out var x direkt beim Aufruf deklarierbar.
C Sprache
- C# Abstrakte Klassen & Methoden meistern: Praktischer Leitfaden
- C# Partielle Klassen und Methoden verstehen
- Versiegelte Klassen und Methoden in C# meistern
- Methodenüberladung in C# meistern: Konzepte, Beispiele und Best Practices
- C-Funktionen meistern: Struktur, Deklaration & Best Practices
- Effiziente Speichernutzung mit C-Bitfeldern
- Variable Argumente in C meistern: Ein praktischer Leitfaden
- Java 8 Default Methods: Interfaces mit Implementierung & Backward Compatibility
- MATLAB Integration meistern: Von Stammfunktionen zu Riemann-Summen
- C# Delegates verstehen: Ein Leitfaden zu Funktionsreferenzen und Events