C# Welchen Vorteil hat ein Property gegenüber getTermin-Methode?

... komplette Frage anzeigen

2 Antworten

  1. Aussehen

Was sieht besser und natürlicher aus?

DateTime termin = TerminenManager.getNächsterTermin();

oder

DateTime termin = TerminenManager.NächsterTermin;

2. Praktische Veranlagerung

Wenn man eine Variabel setzt tut man dies für gewöhnlich so:

string text = "inhalt";

Man könnte auch ein Attribut einer Klasse so setzen, sei sie public.

TextManager.text = "inhalt";

Was ist denn aber wenn wir zusätzlich etwas überprüfen wollen wenn wir das Attribut setzen wollen? Für gewöhnlich würde man jetzt eben get set Methoden schreiben sprich:

TextManager.setText("inhalt");

Jetzt unterscheidet man aber beim setzen eines Klassenattributs und einer Variabel. Das eine mithilfe einer Methode das andere aber mit dem "ist gleich" Operator "=". Und um genau das zu vermeiden, damit man ganz gleich mit Attributen und Variabeln umgeht gibt es in C# Propertys. Sie sorgen einzig und allein dafür das man mit dem "ist gleich" Operator trotzdem noch code ausführen kann der den zu setzenden Inhalt überprüft und entsprechend handelt.

Hier nochmal die getMethode im Vergleich zur Property:

public DateTime getTermin() { return Termin; }

und

public DateTime Termin { get{ return Termin;} }

Beim setzen liefern Propertys das Schlüsselwort "value" was den Wert übernimmt den man mit dem ist gleich Operator setzen will sprich:

public DateTime Termin {
       get { return Termin; }
       set { Termin = value; }
}

Fazit: Wir haben eine Property die gleichzeitig das Holen und das Setzen eines Attributs behandelt im Vergleich zu zwei Methoden die weniger schön aussehen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PWolff
18.07.2016, 14:20

Für mich ist der wichtigste Aspekt, dass solche Einstellungen auch bei den mitgelieferten Klassen auf genau diese Weise ausgelesen und gesetzt werden. Die Verwendung von Properties statt Einzelprozeduren für Getter und Setter erhöht also die Einheitlichkeit des Programmcodes und vermindert damit die Fehleranfälligkeit.

Intern wird eine Property vor dem endgültigen Kompilieren in Getter und Setter umgesetzt. Lediglich die Reflection "weiß" noch, dass es sich im Quelltext um eine Property gehandelt hat.

1
Kommentar von JacksMuller
18.07.2016, 14:29

Vielen Dank für eine solch detaillierte Erklärung! 👍🏼👍🏼👍🏼👍🏼👍🏼

1
Kommentar von DataJockey
19.07.2016, 11:06

Super erklärt.

1

Ist eig egal was du verwendest. Finde Properties persönlich schöner. Außerdem ist das halt in C# so Standard ;)

Musst die Klassenvar. klein schreiben und dann halt die Property schreiben (Name mit Großbuchstabe).

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von triopasi
18.07.2016, 12:29

PS: Dein Code ist falsch, du gibst nen string als DateTime zurück??!

0

Was möchtest Du wissen?