• Home
  • |
  • Blog
  • |
  • C# Tutorial [7/17] – C# Methoden ohne und mit Rückgabewerten

C# Tutorial [7/17] – C# Methoden ohne und mit Rückgabewerten

Zuletzt aktualisiert: Juni 28, 2023

In diesem Blogartikel wirst du lernen, was C# Methoden sind. Bei Methoden handelt es sich um ein sehr wichtiges Thema in der C# Programmierung. Sie helfen uns allgemein dabei, unseren Code besser zu organisieren und zu strukturieren. Außerdem sorgen sie dafür, dass wir gewisse Abschnitte nicht immer wieder neu programmieren müssen.

Was es genau damit auf sich hat, werde ich dir in den folgenden Zeilen Schritt für Schritt zeigen.

Inhaltsverzeichnis

1. Was sind Methoden?

Mit Methoden können wir Code schreiben, welchen wir immer wieder aufrufen können, ohne ihn neu schreiben zu müssen. C# Methoden haben dabei einen Namen, eine Parameterliste, einen Codeblock und in manchen Fällen auch einen Rückgabewert.

Der Name ist deshalb wichtig, weil wir über diesen den dazugehörigen Codeblock immer wieder erneut aufrufen können.

Über die Parameterliste können wir der Methode Werte mitgeben, mit welchen wir dann intern im Codeblock arbeiten können.

Der Codeblock selbst stellt den Inhalt der Methode dar und spiegelt wieder, was passiert, wenn wir die Methode ausführen. Darin befindet sich also der ganze Code.

Beim Rückgabewert handelt es sich um das, was die Methode sozusagen als Ergebnis wieder zurückliefert.

Was das Ganze bedeutet, wirst du aber gleich noch genauer anhand eines Beispiels sehen.

Allgemein kann man sagen, dass es uns C# Methoden ermöglichen, unseren Code in kleinere Abschnitte aufzuteilen. Somit gestalten sie unseren Code übersichtlich und wartbar. Dabei handelt es sich um einen wichtigen Vorteil, den uns Methoden bzw. Funktionen allgemein in der Programmierwelt bieten.

Methoden sind im Grunde Funktionen, falls dir das Wort „Funktion“ bereits etwas sagt. Funktionen nennt man in der objektorientierten Welt allerdings Methoden. In der nicht objektorientierten Welt hingegen bleibt der Name bei „Funktion“.

Es existieren also zwei unterschiedliche Namen für sehr ähnliche Dinge. Falls dir jetzt allerdings das Wort „Funktion“ auch nichts sagen sollte, ist das ebenfalls kein Problem. Wir werden uns jetzt nämlich die C# Methoden anhand von Beispielen ansehen.

2. C# Methoden ohne Rückgabewert

Zuerst werden wir uns eine Methode ohne Rückgabewert ansehen. Wie du im folgenden Bild sehen kannst, befinden wir uns in der Klasse Program, die bereits am Anfang generiert wurde:

c# methoden beispiel

Darin sehen wir die Main-Methode, bei der es sich, wie der Name schon verrät, auch um eine Methode handelt.

Unterhalb der Main-Methode haben wir eine eigene Methode definiert: die GreetUser-Methode. Dieser kann man einen String namens username übergeben, wenn man sie aufruft. Das Programm gibt dann in der Konsole aus „Hallo username. Wie geht es dir?“.

Wie du siehst, können wir diese GreetUser-Methode auch über ihren Namen (GreetUser) in der Main-Methode aufrufen und dort einen Parameter mitgeben.

Im Beispiel habe ich den Namen Peter für den String username übergeben. So gibt das Programm in der Konsole aus „Hallo Peter, wie geht es dir?“.

Damit haben wir ein einfaches Beispiel für eine Methode.

Wie du sehen kannst, habe ich auch das Schlüsselwort „static“ angehängt. Das liegt daran, dass wir die Methode in der class Programm definieren und wir sie ohne Objekt, also ohne eine Objektinstanz aufrufen können möchten. Das geht nun alles schon etwas in die objektorientierte Programmierung über. So weit wollen wir jetzt aber noch nicht denken, versuche also im Moment noch, das „static“ gedanklich auszublenden. Was static genau bedeutet, wirst du in der Zukunft noch erfahren.

Dann folgt ein „void“. Das Schlüsselwort void bedeutet einfach, dass die Methode kein Ergebnis als Rückgabewert zurückliefert.

Anschließend kommt der Name der C# Methode, in diesem Fall also GreetUser, gefolgt von einem Klammerpaar. Das Klammerpaar müssen wir immer mit dazu schreiben. Dieses beinhaltet die sogenannte Parameterliste. Falls man keine Parameter annehmen möchte, setzt man lediglich ein leeres Klammerpaar. Mehrere Parameter hingegen trennt man innerhalb der Klammern mit einem Komma voneinander.

Als Parameter haben wir, wie bereits erwähnt, den String username. Dieser ist im Grunde eine Variable, die wir in unserer C# Methode verwenden. Im Code des Beispiels nutzen wir diese Variable username dann auch und können ihr über den Parameter einen Wert übergeben. Im Falle unseres Beispiels habe ich den String „Peter“ übergeben.

Wie du siehst, ist das Ganze eigentlich ziemlich einfach.

3. C# Methoden mit Rückgabewert

Sehen wir uns nun aber mal ein Beispiel einer C# Methode mit Rückgabewert an:

c# methode mit rückgabewert beispiel

In diesem Beispiel sehen wir wieder die Main-Methode und unter dieser eine static double RectangleArea-Methode. Doch was ist das?

Ich habe eine Methode erstellt, die RectangleArea heißt und wie der Name es schon vermuten lässt, kann man mit dieser den Flächeninhalt von einem Rechteck berechnen. Man übergibt darin mit dem double width (Breite) und double height (Höhe) Parameter. Das heißt eine Breite und eine Höhe jeweils vom Typ Double. In der Methode schreiben wir, dass mit dem Schlüsselwort return ein Wert an den Aufrufer zurückgegeben werden soll. Dieser Wert ist das Ergebnis, das wir aus der Rechnung width * height erhalten.

Wie du vielleicht schon gesehen hast, habe ich bei dieser Methode nicht void, sondern double geschrieben, da der Rückgabewert vom Typ double ist. Das müssen wir vor dem Methodennamen angeben, um auch mit return dann einen double zurückgeben zu können.

Würden wir hingegen void anstelle von double schreiben, könnten wir einen double nicht mit return zurückgeben.

In der Main-Methode rufe ich das Ganze dann auf, indem ich einen double namens „area“ erstelle. Diesem weise ich dann das zu, was RectangleArea mit den beispielhaften Werten 8 und 5 für die Breite (width) und die Höhe (height) zurückgibt. Das heißt, ich lasse hier die Fläche eines Rechtecks berechnen, das die Maße 8 und 5 hat.

Das Ergebnis, also den Flächeninhalt, schreibt das Programm dann in die Variable „area“. Zu guter Letzt lasse ich die Fläche über Console.WriteLine ausgeben.

Das sind also C# Methoden! Sehen wir uns nun das Ganze noch einmal in der Praxis in Visual Studio an.

4. C# Methoden ohne Rückgabewert in der Praxis

Beginnen wir hierfür mit einer Methode ohne Rückgabewert. Wie definiert man eine Methode? Zuerst geht man in eine Klasse, in der man die Methode definieren möchte. Da wir hier nur die Klasse Program haben, gehen wir in deren Codeblock. In der Klasse Program befindet sich auch die Main-Methode, unter welcher wir nun eine eigene Methode schreiben.

Doch wie definieren wir jetzt in der Klasse Program eine Methode? Wir müssen hierfür zunächst eine statische Methode definieren, damit diese nicht nur über eine Objektinstanz aufgerufen werden kann. Wie gesagt, geht das schon etwas in die objektorientierte Programmierung, die wir noch nicht behandelt haben. Trotzdem müssen wir das „static“ in diesem Fall einfach mit angeben.

Was statische Methoden sind bzw. was dieses Schlüsselwort „static“ allgemein bedeutet, wirst du später lernen.

Nun müssen wir also im Grunde nur die Methode definieren. An erster Stelle legt man den Rückgabetyp der Methode fest. Man kann also angeben, von welchem Datentyp der Wert ist, den die Methode zurückgibt.

Da wir allerdings zuerst eine Methode ohne Rückgabewert erstellen möchten, schreiben wir an der Stelle einfach void. Somit gibt sie nichts zurück:

rückgabewert der methode

Nun müssen wir der Methode einen Namen geben. Wir nennen diese einfach mal PrintMultipleMessages, womit wir sagen wollen „gebe mehrere Nachrichten in der Konsole aus“.

Neben den Namen setzen wir nun ein Klammerpaar, zwischen welches wir Parameter schreiben können. Das ist kein Muss, allerdings möchten wir für dieses Beispiel tatsächlich Parameter annehmen. Dafür wählen wir einen String, bei dem es sich um die Message handelt, die das Programm ausgeben soll und einen Integer für die Anzahl der Messages. Also wie oft wir die Message in der Konsole ausgeben lassen möchten. Diesen nennen wir jetzt einfach mal „count“.

Anschließend setzen wir das geschweifte Klammerpaar, zwischen welches wir den Code der Methode schreiben werden:

methodenkopf fertig definieren

Im Codeblock schreiben wir dann while (count > 0), also so lange die Variable count einen größeren Wert als die Zahl 0 hat, möchten wir mit Console.WriteLine die Message ausgeben lassen und count mit jedem Durchlauf um 1 verringern:

methodenkörper definieren

Damit ist die Methode PrintMultipleMessages auch schon fertig. Jetzt können wir sie zum Beispiel oben in der Main-Methode aufrufen.

Um das umzusetzen, rufen wir sie über ihren Namen PrintMultipleMessages auf, setzen ein Klammerpaar und übergeben dann in diesem die Parameter message und count. Für den Parameter message wählen wir „Hallo Welt“ und schreiben nach einem Komma für den Parameter count den Wert 3.

So soll das Programm die Message dreimal ausgeben:

aufruf der c# methode

Wenn wir das Programm nun ausführen, sehen wir Folgendes in der Konsole:

ausgabe der c# methode

Das Schöne an Methoden ist, dass wir deren Codeblöcke immer wieder aufrufen können, ohne sie neu schreiben zu müssen. Auch die Parameter können wir für jede Methode individuell wählen.

Wir könnten also zum Beispiel, nachdem wir 3-mal „Hallo Welt“ ausgegeben haben, über die gleiche Methode eine andere Message ausgeben lassen. Das kann beispielsweise „Hello World!“ sein, welches wir diesmal 10-mal ausgeben lassen:

weiterer c# methoden aufruf

Wie du siehst, haben hier nun folgendes Ergebnis in der Konsole:

ausgabe auf der konsole

Zuerst gibt das Programm 3-mal das deutsche „Hallo Welt“ aus und danach folgt der nächste Aufruf mit dem „Hello World!“, welches 10-mal in der Ausgabe erscheint. Es funktioniert also einwandfrei. Wir können das, was wir in diese Methode geschrieben haben also immer wieder verwenden.

Aus diesem Grund können wir mithilfe von C# Methoden unseren Code weitaus besser und wartbarer strukturieren. So können wir nämlich mehrere Methoden definieren, die alle jeweils ihre eigenen Aufgaben erfüllen. Wir haben also nicht den gesamten Code in der Main-Methode, sondern wir lagern so verschiedene Aufgaben in mehrere Methoden aus, die wir dann entsprechend aufrufen können, wenn wir sie benötigen.

Wenn wir an diesen Methoden etwas ändern möchten, müssen wir lediglich an die Stelle der Methode springen, an der wir sie definiert haben und können sie dort anpassen. So müssen wir nicht in einem riesigen Codeblock danach suchen.

Das war also ein Beispiel für C# Methoden ohne Rückgabewert. Nun sehen wir uns noch eines für Methoden mit Rückgabewert an.

5. C# Methoden mit Rückgabewert in der Praxis

Methoden mit Rückgabewert sind im Grunde genauso einfach zu definieren wie Methoden ohne Rückgabewert. Der Unterschied liegt darin, dass wir statt void einen Datentyp mitgeben müssen.

Wir erstellen nun also eine Methode mit Rückgabewert und nennen diese CheckAge. Mit dieser möchten wir prüfen, ob ein Benutzer über 18 ist.

Sollte das der Fall sein, gibt die Methode ein true zurück. Andernfalls ein false. Hierfür müssen wir also einen boolean Wert zurückgeben, also ein true oder ein false.

Wir schreiben also static und statt void wählen wir bool sowie den Namen CheckAge. Dieser Methode übergeben wir einen Integer:

c# methoden mit rückgabewert methodenkopf

Nun geben wir im Grunde nur ein true oder ein false zurück, je nachdem, ob der Wert der Variable age größer oder gleich 18 ist oder eben nicht.

Doch wie machen wir das?

Wenn wir etwas als Ergebnis von diesem Methodenaufruf zurückgeben oder auch „returnen“ möchten, nutzen wir das Schlüsselwort return. Diesem return müssen wir jetzt nur noch einen Wert mitgeben, den das Programm damit zurückgeben soll. Diesen Wert erhalten wir aus einem booleschen Ausdruck.

Wir möchten schließlich prüfen, ob age größer oder gleich 18 ist. Also schreiben wir: return age >= 18;

methodenkörper beispiel mit rückgabewert

Das ist ein boolescher Ausdruck. Hier prüft das Programm, ob age größer oder gleich 18 ist. Wenn ja, gibt das Programm ein true zurück. Dieses true gibt die Methode dann mit return an den Aufrufer zurück. Wenn age nicht größer oder gleich 18 ist, erhalten wir ein false, welches die Methode ebenfalls zurückgibt.

Jetzt können wir im Grunde Folgendes machen:

In der Main-Methode können wir beispielsweise eine Variable namens age erstellen, die ein Alter repräsentiert und dieser den Wert 12 zuweisen. Anschließend schreiben wir if (CheckAge(age)), womit wir überprüfen, ob die Variable age größer oder gleich 18 ist.

Wenn wir hierbei ein true erhalten, lassen wir in der Konsole „Du bist volljährig“ ausgeben. Falls das hingegen nicht der Fall ist, lassen wir „Du bist minderjährig“ in der Konsole ausgeben:

c# methode mit rückgabewert aufrufen

Um zu sehen, was nun passiert, führen wir das Ganze einmal aus:

konsolenausgabe des beispiels

Da wir 12 beim Alter angegeben haben, gibt das Programm den Satz „Du bist minderjährig“ in der Konsole aus. Schreiben wir nun allerdings, dass das Alter bei 18 liegt, erhalten wir die Ausgabe „Du bist volljährig“:

modifiziertes c# methoden beispiel
ausgabe des beispiels

Geben wir bei age den Wert 22 an, sehen wir ebenfalls den Satz „Du bist volljährig“ in der Konsole:

weiteres beispiel
konsolenausgabe des weiteren Beispiels

Das war also im Grunde ein weiteres Beispiel für eine C# Methode mit Rückgabewert. Statt dem Schlüsselwort void schreibt man einen Rückgabedatentyp, den man mit return auch zurückgeben kann.

An dieser Stelle sind wir auch schon am Ende dieses Beitrags über C# Methoden angekommen. Im nächsten Artikel werden wir uns ansehen, wie man Benutzereingaben in C# abfragen kann. Wenn das für dich interessant klingt, schau gerne wieder vorbei!