• Home
  • |
  • Blog
  • |
  • C# Tutorial [15/17] – C# Konstruktor

C# Tutorial [15/17] – C# Konstruktor

Zuletzt aktualisiert: Juni 28, 2023

In diesem Beitrag möchte ich dir zeigen, was es mit dem sogenannten C# Konstruktor auf sich hat und wie man diesen in der Praxis verwendet.

Sie sehen gerade einen Platzhalterinhalt von Youtube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

Inhaltsverzeichnis

1. Was ist ein Konstruktor?

Ein Konstruktor ist eine spezielle Methode, die immer beim Erstellen eines Objekts aufgerufen wird. Man nutzt ihn dazu, um das Objekt zu konstruieren, also um beispielsweise Eigenschafts- und Variablenwerte zu initialisieren oder andere Dinge zu veranlassen, die beim Erstellen eines Objekts geschehen sollen.

Der Konstruktor ist die erste Methode, die immer aufgerufen wird, wenn wir ein Objekt von einer Klasse erzeugen.

Dazu sehen wir uns nun ein Beispiel an. Auf der folgenden Abbildung kannst du eine Klasse sehen, die „Person“ heißt:

C# Konstruktor Person-Klasse

Diese hat drei Eigenschaften: Vorname, Nachname und Alter. Was Eigenschaften im Detail sind, wirst du direkt im nächsten Beitrag lernen. Stell dir diese am besten erst mal wie ganz normale Variablen vor.

Direkt darunter befindet sich ein C# Konstruktor. Dieser sieht auf den ersten Blick wie eine Methode aus, was er letzten Endes auch ist. Mit dem Unterschied, dass es sich bei einem Konstruktor um eine spezielle Methode handelt, die bei der Objekt-Erzeugung immer zuerst aufgerufen wird.

Einen C# Konstruktor definiert man folgendermaßen:

Zuerst schreibt man in der Regel das Schlüsselwort public. Es ist zwar keine Pflicht, einen Konstruktor public zu machen, allerdings setzt man das in den meisten Fällen so um. Anschließend folgt der Name der Klasse (in welcher der Konstruktor definiert wird) und der Rest sieht so aus wie eine normale Methode auch. Das heißt, es gibt ein Klammerpaar und eine Parameterliste. Anschließend können wir mit diesen Parametern beispielsweise im Konstruktor-Körper die Eigenschaften Vorname, Nachname und Alter initialisieren:

Im C# Konstruktor Eigenschaften initialisieren
Und jetzt kommt das Besondere: Das Programm ruft den C# Konstruktor nun immer dann auf, wenn wir ein neues Objekt von dieser Klasse erzeugen.

Wir erstellen also beispielsweise eine neue Variable vom Typ Person, die wir person1 nennen. Darin möchten wir jetzt mithilfe des new-Schlüsselwortes ein neues Objekt speichern, das wir aus dieser Klasse instanziieren:

Variable person1 erstellen und neues Objekt darin speichern

Wie du siehst, ist das erst mal nichts Neues. Wir schreiben new Person, um das Objekt zu erzeugen und in das Klammerpaar nach „Person“ setzen wir Parameterwerte. Diese Parameterwerte sind die Werte für die Parameter des C# Konstruktors. Das heißt, wir übergeben dem String vorname den String „Andrea“, dem String nachname übergeben wir den String „Müller“ und dem Integer alter übergeben wir die Zahl 43. Mit diesen Werten initialisieren wir dann die Eigenschaften Vorname, Nachname und Alter innerhalb des Konstruktors. Genau das möchte ich dir noch in einem Praxisbeispiel veranschaulichen.

2. Der C# Konstruktor in der Praxis

In der folgenden Abbildung haben wir es wieder mit der gleichen Klasse zu tun, die wir bereits im vorherigen Beitrag erstellt haben: Mit der Klasse Person.

Die Klasse Person mit der Methode sageEtwas

Diese besaß die drei Eigenschaften Vorname, Nachname und Alter. Außerdem enthielt sie die Methode sageEtwas. An dieser Stelle werden wir oben in der Main Methode ein Objekt von Person erzeugen.

Dafür erstellen wir eine Variable vom Typ Person, die wir einfach mal person1 nennen. In diese Variable können wir nun mit der Zeile „= new Person();“ ein neues Personenobjekt schreiben:

In die Variable person1 wird ein neues Personenobjekt geschrieben

Jetzt besteht allerdings das Problem, dass dieses Personenobjekt noch keinen Wert für Vorname, Nachname und Alter besitzt. Deshalb müssen wir diese Werte zunächst einmal per Hand zuweisen. Das können wir zum Beispiel, wie auf der folgenden Abbildung zu sehen ist, umsetzen und anschließend die Methode sageEtwas aufrufen, der wir einen String übergeben:

Dem Personenobjekt Werte zuweisen und die Methode sageEtwas aufrufen

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

Konsolenausgabe Hallo Welt

Gar nicht mal so schwer also!

Wie du merkst, ist es allerdings ziemlich umständlich, bei jedem Personenobjekt Vorname, Nachname und Alter einzeln per Hand zuweisen zu müssen.

Genau deshalb gibt es in C# die Möglichkeit, einen Konstruktor zu definieren. Und genau das werden wir jetzt machen.

Dafür gehen wir zurück in unsere Klasse Person unter die Eigenschaften und definieren dort einen Konstruktor, mit dem wir diese Eigenschaftswerte direkt zuweisen müssen.

Wir erstellen einen C# Konstruktor, indem wir zuerst public schreiben. „private“ und jeder andere Zugriffsmodifizierer sind ebenfalls möglich, allerdings wählt man in den meisten Fällen public. Was diese Zugriffsmodifizierer genau sind, wirst du in einem anderen Beitrag lernen.

Man definiert einen C# Konstruktor, indem man anschließend den Klassennamen angibt, gefolgt von einem Klammerpaar, welcher die Parameterliste für den Konstruktor darstellt. Erst übergeben wir einen String vorname, dann einen String nachname und im Anschluss einen Integer alter.

Danach kommt auch schon der Methodenkörper bzw. der Konstruktorkörper in Form eines geschweiften Klammerpaares. Darin schreiben wir dann Vorname = vorname. Das erste Wort „Vorname“ schreiben wir groß, weil es unsere Eigenschaft ist. Das Zweite schreiben wir klein, weil es sich dabei um den Parameter handelt. Gleiches setzen wir noch bei Nachname und Alter um:

C# Konstruktor definieren

Scrollen wir jetzt allerdings in unserem Programm nach oben, sehen wir einen Fehler, den man auf der nachfolgenden Abbildung erkennen kann:

Markierter Fehler im C# Code
Den Fehler zeigt uns das Programm an, weil wir jetzt beim Erstellen eines Objekts vom Typ Person die Parameter tatsächlich übergeben müssen.

Das heißt, wir können den Teil unterhalb der ersten Zeile löschen und dann ein neues Personenobjekt erstellen, das wir Peter Maier nennen und als Alter beispielhaft 32 festlegen:

Neues Personenobjekt namens Peter Maier erstellen

Wenn wir jetzt person1.sageEtwas aufrufen, sehen wir in der Konsole wieder Peter Maier, der „Hallo Welt“ sagt:

Konsolenausgabe Peter Maier Hallo Welt

Und genau so können wir uns das Erzeugen von Objekten wesentlich einfacher gestalten!