• Home
  • |
  • Blog
  • |
  • C# Tutorial [16/17] – C# Eigenschaften in der Theorie

C# Tutorial [16/17] – C# Eigenschaften in der Theorie

Zuletzt aktualisiert: September 5, 2024

Im heutigen Beitrag wirst du die C# Eigenschaften, die auch oftmals als Attribute bezeichnet werden, in der Theorie kennenlernen. Außerdem wirst du erfahren, wann man sie verwendet und wozu es diese gibt. Im nächsten Blogartikel sehen wir uns das Ganze dann in der Praxis an.

Inhaltsverzeichnis

1. Was sind C# Eigenschaften?

Auf den ersten Blick wirken C# Eigenschaften wie ganz normale Variablen einer Klasse und man verwendet sie auch ähnlich. Genau deshalb habe ich in den vergangenen Beiträgen geschrieben, man könne sie sich vorerst als solche vorstellen. In der Realität sind sie allerdings keine normalen Variablen.

C# Eigenschaften sind besondere Variablen, welche wir mithilfe von zwei Methoden beschreiben und lesen können. Dabei handelt es sich um die sogenannten get- und set-Methoden. Man verwendet Eigenschaften zum Kapseln von Daten. Was das bedeutet, werde ich dir später noch erklären.

Um es vorab schon mal einfach auszudrücken: Eigenschaften sind besondere Variablen, auf welche wir nicht direkt, sondern über zwei Methoden zugreifen.

Über die get-Methode lesen wir den Wert von Eigenschaften und
über die set-Methode überschreiben wir den Wert von Eigenschaften.

2. Wann verwenden wir in C# Eigenschaften?

Nun stellt sich natürlich die Frage: Wann verwenden wir Eigenschaften/Attribute überhaupt anstelle von normalen Variablen? Wir verwenden C# Eigenschaften immer dann, wenn deren Werte das Objekt auch wirklich beschreiben und wir diese öfter benötigen als lediglich ein einziges Mal in einer bestimmten Methode.

Das Alter eines Menschen könnte beispielsweise eine Eigenschaft sein, da es diesen beschreibt. Es ist also etwas, das den Menschen an sich tatsächlich ausmacht.

Auch der Name eines Menschen kann eine Eigenschaft sein, da er diesen ebenfalls beschreibt. Der Name ist schließlich wichtig für andere Objekte, die mit diesem Menschenobjekt interagieren.

Man nutzt C# Eigenschaften bzw. Attribute also für alle Dinge, die ein Objekt beschreiben. Wenn wir in einer Methode Variablen benötigen, welche das Objekt nicht beschreiben, verwenden wir normale Variablen.

Das möchte ich dir nun an einem Beispiel zeigen:

Klasse Person mit den C# Eigenschaften Vorname, Nachname, Alter

In diesem Beispiel sehen wir eine Klasse namens Person.

Oben befinden sich drei Eigenschaften: Vorname, Nachname und Alter. Diese sind Eigenschaften, da sie das Objekt tatsächlich beschreiben.

Darunter sehen wir eine Methode mit dem Namen SageEtwas. In dieser befindet sich eine normale Variable namens „ausgabe“. Die Variable ausgabe ist schlichtweg eine temporäre normale Variable, da wir sie nur in diesem Methodenkontext benötigen. Die Variable ausgabe unseres Beispiels beschreibt das Personenobjekt nicht und ist somit auch keine Eigenschaft.

Vorname, Nachname und Alter wiederum beschreiben unser Personenobjekt sehr wohl. Deshalb handelt es sich dabei auch um Eigenschaften, während ausgabe lediglich eine normale Variable darstellt.

Zu Beginn dieses Beitrags habe ich erwähnt, dass in C# Eigenschaften dazu verwendet werden, Daten zu kapseln. Auf den Begriff „Datenkapselung“ möchte ich an dieser Stelle eingehen und erklären, was das überhaupt bedeutet.

3. Was bedeutet Datenkapselung?

Mithilfe der Datenkapselung werden Daten eines Objekts vor äußeren Zugriffen geschützt. 

Ermöglicht wird dies mit Eigenschaften. Eine Eigenschaft ist ein Konstrukt aus einer privaten Variable und zwei Methoden, welche man dazu verwendet, um die Variable zu überschreiben und zu lesen.

Diese Methoden nennt man „Get“ und „Set“ oder ausgesprochen: Getter- und Setter-Methoden. Nun möchte ich dir auf der nächsten Abbildung zeigen, wie diese Get- und Set-Methoden aussehen können.

die Get-Methode und die Set-Methode in C#

Was du in den vergangenen Artikeln bereits häufig gesehen hast, sind die sogenannten automatisch implementierten Eigenschaften. Bei diesen schreibt man beispielsweise „public string“, gefolgt vom Eigenschaftsnamen, in unserem Beispiel „Vorname“ und einem geschweiften Klammerpaar. In dieses Klammerpaar schreibt man get und set.

Ich habe bereits erklärt, dass eine Eigenschaft ein Konstrukt aus diesen beiden Methoden und einer privaten Variable ist. Die Variable enthält den Wert der Eigenschaft. Über die Methoden Get und Set greift man auf diese Variable zu. Get gibt uns den Wert der Variable zurück und Set ermöglicht uns, diesen Wert zu überschreiben.

4. Automatisch implementierte C# Eigenschaften

Bei automatisch implementierten Eigenschaften ist es schon einfacher.

Der Grund: Wir müssen dabei in C# die private Variable selbst gar nicht anlegen. Einen Codeblock für die Get- und Set-Methoden müssen wir auch nicht definieren, da man bei automatisch implementierten Eigenschaften keinen eigenen Code in die Getter und Setter schreibt.

Auf diese Art und Weise kann man Eigenschaften, die keinen besonderen Getter und Setter haben sollen, ziemlich schnell erstellen.

Der Getter gibt den Wert der Eigenschaft zurück und der Setter überschreibt ihn. Wir müssen uns selbst also gar nicht darum kümmern.

Jetzt kann man diese Eigenschaften aber auch selbst voll ausschreiben, um eigene Logik in die Getter- und Setter-Methoden zu implementieren. Wenn man das umsetzt, muss man auch die private Variable, die im Hintergrund ist, selbst deklarieren.

Auf der Abbildung oben mache ich das mit der Eigenschaft Alter. Zuerst erstelle ich eine private Integer Variable namens alter. Kleingeschrieben, da es sich um eine normale Variable handelt.

Um diese Variable zu kapseln, erstelle ich einen public int Alter. Das ist die Eigenschaft, die wir nutzen, um die Variable zu kapseln.

Eigenschaften schreibt man groß, deshalb schreibe ich auch auf dem Beispiel Alter groß.

Anschließend kommt ein Codeblock. In diesem definiert man den Getter mit dem Schlüsselwort get, gefolgt von einem Codeblock und dem Setter, auf den ebenfalls ein Codeblock mit dem Schlüsselwort set folgt. Damit haben wir eine voll ausgeschriebene Eigenschaft.

Im Getter gebe ich den Wert von der privaten Variable alter zurück an den Aufrufer, der diese Eigenschaft lesen möchte. Im Setter überschreibe ich den Wert von alter mit dem „value“, also dem Wert, den man an diese Eigenschaft übergeben möchte.

„value“ enthält immer die Zahl bzw. den Wert, den wir an diese Eigenschaft übergeben möchten. Dabei handelt es sich um ein Schlüsselwort, dessen Funktionsweise wir uns im nächsten Beitrag ansehen werden. Das ist also eine vollausgeschriebene Eigenschaft.

Natürlich können wir in die Codeblöcke der Getter und Setter noch eigene Logik hinzufügen. Zum Beispiel könnten wir bei set alter erst mal prüfen, ob das Alter, das wir zuweisen möchten, überhaupt ein positiver Wert ist. Ist der Wert also größer als 0? Wenn das nicht der Fall wäre, könnte ich zum Beispiel eine „Exception schmeißen“, also einen Fehler ausgeben. Oder ich setze den Wert von alter auf 0, da das noch ein funktionierendes Alter wäre.

Wir können also je nach Eigenschaft und Bedarf einiges an Logik hinzufügen.

Das sind also Eigenschaften!

Nochmal zusammengefasst:

Im Grunde handelt es sich bei C# Eigenschaften um ein Konstrukt aus einer privaten Variable und den Get- und Set-Methoden. Die Get-Methode gibt den Wert der privaten Variable zurück und die Set-Methode überschreibt diesen, wenn wir über die Eigenschaft einen Wert zuweisen möchten. Das ist im Prinzip schon alles. Wir kapseln damit also den Wert von der privaten Variable.

Im nächsten Blogartikel schauen wir uns das Ganze direkt einmal an einem richtigen Beispiel an, sodass du auch sehen kannst, wie das in der Praxis funktioniert.