In dieser Lektion sprechen wir über C# Methoden. Ein sehr wichtiges Prinzip bei der Programmierung ist das sogenannte DRY-Prinzip. Es steht für Don’t Repeat Yourself, was soviel bedeutet wie “wiederhole deinen Code nicht”. Mit Methoden können wir eine bestimmte Funktionalität unseres Codes auslagern und immer wieder aufrufen.
Das ganze hört sich wesentlich komplizierter an als es eigentlich ist. Hier ein Beispiel. Wir schreiben eine Methode, die “Hallo Welt” in die Konsole ausgeben soll. Diese Methode rufen wir dann vom Startpunkt static void Main
unseres Programmes auf (Konsolen-Anwendung Visual Studio).
Wir gehen das ganze wieder anhand einer C# Konsolen-Anwendung aus Visual Studio durch.
static void Main(string[] args)
{
// Wir rufen unsere neue Methode auf
WriteToConsole();
Console.ReadKey();
}
static void WriteToConsole()
{
Console.WriteLine("Hallo Welt");
}
Ein wichtiger Hinweis an dieser Stelle. Vielleicht hast du dich schon gefragt was static
bedeuten soll. Wir müssen dafür einmal kurz vorgreifen. C Sharp ist eine objektorientierte Programmiersprache, dass bedeutet das wir mit Objekten arbeiten. An dieser Stelle haben wir aber noch gar keine Objekte und wenn wir Methoden aufrufen wollen ohne ein Objekt zu benutzen, dann müssen wir die Methode als statisch (static
) deklarieren. Deshalb steht vor den Methoden static
.
Lass dich von dem Hinweis jetzt aber nicht von der eigentlichen Funktionalität der Methoden verwirren. Das Beispiel oben würde, wenn wir das Programm starten, “Hallo Welt” in die Konsole schreiben.
Wir schauen uns jetzt den Aufbau einer Methode an. Sie besteht aus den folgenden Komponenten:
- Rückgabewert (hier void)
- Name (kann selbst ausgesucht werden)
- Parameter (hier keine, leere Klammern hinter dem Methodennamen)
Best-Practice: Gib deinen Methoden Namen die auf deren Funktion hindeuten.
Parameter (Übergabewerte) in Methoden
Die Methoden, die wir oben geschrieben haben würde, wenn sie aufgerufen wird immer den gleichen Satz in die Konsole schreiben, nämlich “Hallo Welt”. Jetzt nehmen wir mal an, dass du aber einen anderen Satz ausgeben möchtest. Es wäre sehr schlechte Arbeit eine neue Methode zu schreiben, die einen anderen Satz ausgibt. Richtig wäre es, deinen Wunsch-Satz als sogenannten Parameter in die Methode zu übergeben. Das schauen wir uns an:
static void Main(string[] args)
{
// Wir übergeben einen gewünschten Satz (string) als Parameter
WriteToConsole("Mein Name ist Peter");
Console.ReadKey();
}
static void WriteToConsole(string wishSentence) // <- Hier ist der Parameter
{
Console.WriteLine(wishSentence); // Ausgegeben wird "Mein Name ist Peter"
}
Wir müssen den Parameter erst einmal in der Methode selbst definieren. Welcher Datentyp soll übergeben werden und wie soll er heißen? Danach können wir die Methoden dann aufrufen und einen gewünschten Wert (muss vom gleichen Datentyp sein wie der Parameter) übergeben. Im Beispiel oben haben wir als Parameter-Datentyp einen string
mit dem Namen wishSentence
gewählt. Die Methoden rufen wir dann auf und übergeben "Mein Name ist Peter"
welches ein string
ist.
Eine Methode kann auch mehrere Parameter haben. Wir fügen einfach nach dem ersten Parameter ein Komma ein und fügen der Methode einen zweiten Parameter hinzu:
static void Main(string[] args)
{
// Zwei Übergabewerte
LogPersonInfo("Peter", 35); // Beachte das Komma
Console.ReadKey();
}
static void LogPersonInfo(string name, int age) // <- Komma und zweiter Parameter
{
Console.WriteLine("Persons name is " + name + " and he/she is " + age + " years old");
// Ausgabe wird sein: Persons name is Peter and he/she is 35 years old
}
Im Beispiel oben haben wir nun wieder eine Methoden, nur mit einem anderen Namen und zwei Parametern anstatt einem. Wir modifizieren die Ausgabe in die Konsole am Ende auch etwas. Wir schreiben einen festen Text und fügen Informationen aus den Parametern in die Ausgabe hinzu (dafür benutzen wir das +
).
Aufgabe: Probier es selbst. Erstelle eine Konsolen-Anwendung in Visual Studio und füge deinem Programm eine Methode hinzu und ruf sie auf wenn das Programm startet. Du kannst dich nach den Beispielen von oben richten.
Der Rückgabewert einer Methode
Ich weiß, das Thema ist am Anfang ziemlich einnehmend aber halte durch, hier kommt vorerst die letzte wichtige Information die du unbedingt wissen musst über C Sharp Methoden. Jede Methode kann einen Wert zurückgeben wenn wir es möchten. Vielleicht hast du dich schon gefragt was das Keyword void
bedeutet, dass vor jedem Methodennamen steht.
Unsere Methoden oben nutzen bis jetzt alle den Rückgabetyp void
. Das bedeutet sie geben nichts zurück denn void
heißt so viel wie “nichts”.
Im folgenden Beispiel erstellen wir eine Methode mit einem Rückgabewert vom Datentyp int
. Wenn wir einen Wert zurückgeben möchten, dann benutzen wir das Keyword return
:
static void Main(string[] args)
{
int addedValue = Sum(3,5);
Console.WriteLine("Summe ist " + addedValue);
Console.ReadKey();
}
static int Sum(int x, int y)
{
int calculatedResult = x + y;
return calculatedResult; // Wert zurückgeben
}
Was passiert ist folgendes: Um zwei Werte zu addieren benutzen wir eine selbst geschriebene Methode mit dem Rückgabetyp int
, die zwei Parameter vom Datentyp int
nimmt. Diese beiden Parameter summieren wir und geben das Resultat dann zurück. Nach der Übergabe wir der Wert von addedValue
8 sein.
Nun ein letztes Beispiel anhand eines bool
:
static void Main(string[] args)
{
bool accessGranted = AllowAccess(16);
Console.WriteLine("Zugriff erlaubt: " + accessGranted");
Console.ReadKey();
}
static bool AllowAccess(int age)
{
if(age < 18)
return false;
else
return true;
}
Die Methoden im Beispiel von oben soll überprüfen ob einem gewissen Alter (int age
) Zugriff auf irgendetwas gewährt wird. Ist der Wert von age
kleiner als 18, dann soll der Zugriff verwehrt werden (false
wird zurückgegeben). Ist der Wert größer als 18 soll der Zugriff erlaubt werden (true
wird zurückgegeben). Nach Aufruf der Methode ist der Wert von accessGranted
false
, denn wir übergeben einen Wert von 16 in die AllowAccess
Methode und da 16 kleiner ist als 18 wird der Zugriff verwehrt.
Ich finde, dass an diesem Punkt erstmal genug über C# Methoden gesagt wurde. Wenn du aber noch mehr erfahren möchtest, dann kannst du hier einen Blick in die Offizielle Dokumentation werfen.
C# Methoden sind ein ziemlich komplexes Thema und für Anfänger die größte Hürde. Nimm dir Zeit um probiere am besten selber ein wenig rum. Wenn du ungefähr verstanden hast worum es also bei Methoden geht, dann bist du bereit für die nächste Lektion.
An dieser Stelle kannst du wirklich schon Stolz auf dich selbst sein. Objektorientiertes Programmieren (OOP) ist wirklich kein leichtes Thema und Methoden sind der erste Schritt in die richtige Richtung.