Eine Methode ist ein benannter Codeblock. Du kannst diesen Codeblock aus anderen Programmstellen ausführen, indem du den Methodennamen aufrufst, Daten an die Methode übergeben und von ihr ausgegebene Werte empfangen.
Aufbau einer Methode
Wie bereits erwähnt, ist eine Methode ein Funktionsmitglied einer Klasse.
Grundsätzlich ist eine Methode nichts anderes als eine Funktion. Wenn eine Funktion zu einer Klasse gehört, spricht man von einer Methode. In der C-Sprache werden alle solchen Konstrukte einfach Funktionen genannt.
Jede Methode besteht aus zwei zentralen Bestandteilen: Methodenkopf (Methodendeklaration) und Methodenrumpf.
- Methodenkopf: Er legt alle Eigenschaften der Methode fest und enthält folgende Angaben:
- Ob die Methode einen Rückgabewert liefert; falls ja, muss der Rückgabetyp angegeben werden
- Der Name der Methode
- Die übergebbaren Datentypen sowie Regeln zur Datenverarbeitung
- Methodenrumpf: Er besteht aus einer Sequenz ausführbarer Anweisungen. Die Ausführung beginnt mit der ersten Anweisung im Rumpf und läuft nacheinander ab.
Schauen wir uns ein Beispiel an
string Introduce(string name,int age)
{
string words = $"hello my name is {name},i'm {age} years old";
Console.WriteLine(words);
return words;
}Code-Sprache: C# (cs)
Methodenkopf: string Introduce(string name,int age)
string: Rückgabetyp, also ZeichenketteIntroduce: Methodenname(string name,int age): Parameterliste. Diese beiden Einträge sind Variablen, die Namen und Alter von außen entgegennehmen und innerhalb des Methodenrumpfs verwendet werden können.

Wie ruft man diese Methode auf?
Diese Methode gehört zur Klasse Program und befindet sich gemeinsam mit der Main-Methode in derselben Klasse. Main ist jedoch eine statische Methode. Statische Methoden können nicht direkt nicht-statische Methoden aufrufen. Um Introduce aufzurufen, musst du zuerst eine Instanz von Program erstellen und die Methode über diese Instanz aufrufen.
class Program
{
static void Main()
{
Program program = new Program();
program.Introduce("John", 30);
}
string Introduce(string name,int age)
{
string words = $"hello my name is {name},i'm {age} years old";
Console.WriteLine(words);
return words;
}
}Code-Sprache: C# (cs)
Ein direkter Aufruf wie unten führt zu einem Kompilierfehler

Der korrekte Weg: Erstelle innerhalb der Main-Funktion mit new eine Program-Instanz und rufe anschließend Introduce über diese Instanz auf
Program program = new Program();//√
program.Introduce("John", 30);Code-Sprache: C# (cs)
Methodenrumpf
Ein Methodenrumpf kann null oder mehrere ausführbare Anweisungen enthalten.
Der Methodenrumpf ist ein Codeblock (eine Gruppe von Anweisungen in geschweiften Klammern). Innerhalb eines Codeblocks lassen sich folgende Elemente unterbringen:
- Lokale Variablen
- Kontrollstrukturen (Schleifen, Verzweigungen usw.)
- Aufrufe anderer Methoden
- Verschachtelte Untercodeblöcke
- Lokale Funktionen (Untermethoden innerhalb einer Methode) [späterer Lerninhalt]
class Program
{
static void Main()
{
int age = 3; // Lokale Variable, Initialwert 3
while (age > 0) // Kontrollstruktur
{
--age;
Introduce("Tom", age); // Methodenaufruf
}
{
//Verschachtelter Untercodeblock
}
}
static string Introduce(string name,int age)
{
string words = $"hello my name is {name},i'm {age} years old";
Console.WriteLine(words);
return words;
}
}
Code-Sprache: JavaScript (javascript)
In diesem Codebeispiel wurde der Funktion Introduce das Schlüsselwort static vorangestellt, wodurch sie zu einer statischen Funktion wird. Dann kannst du sie direkt in Main aufrufen, ohne vorher eine Instanz anzulegen.
Lokale Variablen (Local Variables)
Wie die bereits vorgestellten Instanzfelder dienen lokale Variablen zum Speichern von Daten. Instanzfelder speichern üblicherweise den Zustand eines Objekts, lokale Variablen hingegen nur temporäre Daten für einzelne Berechnungen.
Sobald die Methode, zu der lokale Variablen gehören, die Ausführung beendet, werden diese Variablen vom Stack entfernt. Werttyp-Variablen werden sofort vernichtet; Referenztyp-Variablen werden zu einem späteren Zeitpunkt vom Garbage Collector beseitigt.
1. Syntax zur Deklaration lokaler Variablen
Typ Variablenname = Initialwert;
Variablenname: Selbst definierter Bezeichner= Initialwert: Optionaler Initialisierer zum Zuweisen eines Startwerts
2. Grundregeln lokaler Variablen
- Lebensdauer und Gültigkeitsbereich: Existieren nur innerhalb des Blocks, in dem sie deklariert wurden, sowie in allen darin verschachtelten Unterblöcken
- Die Variable entsteht und wird gültig ab der Zeile ihrer Deklaration
- Nach Abschluss des Codeblocks wird die Variable ungültig und gelöscht
- Freie Deklarationsposition: Kann überall im Methodenrumpf platziert werden, muss aber vor der Nutzung deklariert werden
static void Main()
{
int age = 3; //Lokale Variable
Phone p = new Phone(); //Lokale Variable eines benutzerdefinierten Typs
{
int one = 1; //Lokale Variable im Untercodeblock
bool two = false;
}
double d = 0;
}Code-Sprache: JavaScript (javascript)

Instanzfelder vs Lokale Variablen
| Instanzfeld | Lokale Variable | |
|---|---|---|
| Lebensdauer | Wird bei Erstellen einer Objektinstanz angelegt; vernichtet, wenn das Objekt nicht mehr erreichbar ist | Wird ab der Deklarationszeile aktiv; vernichtet nach Ausführung des zugehörigen Codeblocks |
| Standardinitialisierung | Der Compiler weist automatisch den Standardwert des jeweiligen Typs zu | Keine automatische Initialisierung; Nutzung ohne Wertzuweisung führt zu Kompilierfehler |
| Speicherort | Liegt vollständig auf dem Heap, unabhängig von Werttyp oder Referenztyp | Werttyp: Stack; Referenztyp: Referenz auf Stack, Objektdaten auf Heap |
Methode (Method)