1. Funktionen/Methoden in C#
Du hast schon eine Menge Befehle in C# gelernt, das heißt, du kannst schon ziemlich komplexe Programme schreiben. 10, 20, 30 Zeilen Code im Programm – das ist doch noch kein großes Programm, oder?
Aber ein Programm mit 100+ Zeilen – das ist schon groß, und sich darin zurechtzufinden ist gar nicht so einfach. Kann man das Schreiben und Lesen von Programmen mit viel Code irgendwie vereinfachen?
Ja, und dabei helfen uns Methoden (Funktionen).
Was ist eigentlich eine Methode? Ganz einfach gesagt: Eine Methode ist eine Gruppe von Befehlen mit einem einzigartigen Namen. Anders gesagt: Wir packen ein paar Befehle zusammen in eine Gruppe und geben ihr einen eigenen Namen. Und das war's – die Methode ist fertig.
Angenommen, du hast Code, um eine Katze zu zeichnen:
Console.WriteLine(" |\\__/,| (`\\");
Console.WriteLine(" |o_o |__ _) )");
Console.WriteLine(" (____/ (_/ ");
Das gibt folgendes aus:
|\__/,| (`\
|o_o |__ _) )
(____/ (_/
Du kannst diesen Code einfach in eine eigene Methode packen und so viele Katzen zeichnen, wie du willst:
void WriteCat()
{
Console.WriteLine(" |\\__/,| (`\\");
Console.WriteLine(" |o_o |__ _) )");
Console.WriteLine(" (____/ (_/ ");
}
//wir zeichnen drei Katzen
WriteCat();
WriteCat();
WriteCat();
Wenn das Programm läuft, wird bei jedem Aufruf von WriteCat() der gesamte Code innerhalb der Methode WriteCat() ausgeführt. Wir haben einfach einen neuen Befehl (Methode) erstellt, indem wir mehrere Befehle zu einer Gruppe zusammengefasst haben.
Wozu sind Funktionen gut:
- Sie teilen das Programm in Teile, von denen jeder eine eigene Aufgabe übernimmt.
- Sie machen Wiederverwendung einfach: Einmal geschrieben, beliebig oft benutzt.
- Sie verringern die Fehlerwahrscheinlichkeit: Einen Bug in der Funktion behebst du an einer Stelle.
- Sie geben dem Code "Namen" für komplexe Aktionen – die Lesbarkeit steigt enorm.
Terminologie: Funktion, Methode, Prozedur
In C# bedeuten die Begriffe Funktion und Methode meistens das Gleiche, aber es gibt kleine Unterschiede.
- Methode – eine Funktion, die zu einer Klasse oder einem Objekt gehört (in C# ist fast alles eine Methode).
- Prozedur – eine Funktion, die keinen Wert zurückgibt (void-Methoden).
- Funktion – im weiteren Sinne jeder benannte Teil eines Programms, den man aufrufen kann.
Offiziell nennt man das in C# alles Methoden, aber falls du später mal "Funktion" liest – keine Panik!
2. Syntax der Methodendeklaration: Schritt für Schritt
Schauen wir uns mal eine ganz einfache Funktion an, das klassische "Hello, World!", aber wir packen die Ausgabe in eine eigene Methode:
using System;
class Program
{
static void Main()
{
PrintHello();
}
static void PrintHello() // wir geben den Text Hello, World! aus
{
Console.WriteLine("Hello, World!");
}
}
Syntax-Analyse:
| Teil | Beispiel | Beschreibung |
|---|---|---|
| Modifikator | |
Sagt aus, dass die Methode zur Klasse gehört (mehr dazu später) |
| Rückgabewert-Typ | |
Sagt aus, dass die Methode nichts zurückgibt |
| Name der Methode | |
Name der Methode, mit dem sie aufgerufen wird |
| Parameter | |
Argumente (leer – keine Argumente) |
| Methodenrumpf | |
Code, der beim Aufruf der Methode ausgeführt wird |
Analogie:
Eine Methode ist wie ein Kaffeeautomat: Du wirfst Geld ein (Argumente), drückst einen Knopf (rufst die Methode auf), der Automat brüht Kaffee (Methodenrumpf) und gibt das Ergebnis aus (Rückgabewert) – oder eben nicht, wenn es eine void-Methode ist!
3. Wie ruft man Methoden auf
Einen Methodenaufruf schreibst du einfach mit Namen und runden Klammern, das war's:
PrintHello(); // Methode ohne Parameter
int sum = Add(2, 3); // Methode mit Parametern und Rückgabewert
Wichtig: Du kannst eine Methode nur aufrufen, nachdem sie deklariert wurde (oder wenn sie "weiter oben" im Code steht oder sich in derselben Klasse befindet).
4. Methoden mit Parametern
Du kannst einer Methode Parameter übergeben. Das macht das Verhalten der Methode flexibel und anpassbar für alle Fälle. Im Grunde sind Parameter Variablen der Methode, denen beim Aufruf Werte zugewiesen werden. Die Parameter musst du bei der Erstellung der Methode angeben.
static void Greet(string name)
{
Console.WriteLine($"Hallo, {name}!");
}
// Verwendung:
Greet("Alice");
Greet("Bob");
Parameter – das sind Variablen, deren Werte du der Methode beim Aufruf übergibst.
| Teil | Beispiel | Beschreibung |
|---|---|---|
| Typ des Parameters | |
Typ des angenommenen Werts |
| Name des Parameters | |
Name zur Verwendung in der Methode |
Aufrufe:
Greet("Alice"); – name bekommt den Wert "Alice".
Mehrere Parameter
Du kannst mehrere Parameter durch Kommas trennen:
static void PrintSum(int a, int b)
{
Console.WriteLine($"Summe: {a + b}");
}
// Verwendung:
PrintSum(5, 7); // Summe: 12
5. Wert- und Referenz-Parameter
Parameter einer Funktion sind ganz normale Variablen, und für sie gelten die gleichen Regeln wie für andere Variablen auch.
Denk dran: Wenn du ein Array an eine Methode übergibst, übergibst du eine Referenz auf das Array, das heißt, die Methode kann den Inhalt des Arrays verändern. Bei einfachen Typen (int, double) wird der Wert kopiert.
static void ZeroFirstGrade(int[] grades)
{
grades[0] = 0; // Ändert das ursprüngliche Array!
}
// Verwendung:
int[] a = {1, 2, 3, 4, 5};
ZeroFirstGrade(a);
Console.WriteLine(a[0]); //gibt 0 aus
Im Grunde passiert hier Folgendes:
static void ZeroFirstGrade(int[] grades)
{
grades[0] = 0; // Ändert das ursprüngliche Array!
}
// Verwendung:
int[] a = {1, 2, 3, 4, 5};
//ZeroFirstGrade(a);
int[] grades = a;
grades[0] = 0;
Console.WriteLine(a[0]); //gibt 0 aus
GO TO FULL VERSION