Programmierkurs C-Sharp: Eigenschaften
Aus Wikibooks
Dieses Kapitel richtet sich an fortgeschrittene Programmierer. Für einen ersten Einblick in die Eigenschaften, schlagen Sie bitte das Kapitel Objekte und Klassen auf.
[Bearbeiten] Eigenschaften
Eine Eigenschaft (property) ist eine Sicht auf eine öffentliche Variable einer Klasse. Die Variable selbst wird durch einen Zugriffsmodifizierer wie private oder protected (bei Variablen, die in abgeleiteten Klassen überschrieben werden sollen) für den Zugriff von außen gesperrt und über eine Eigenschaft zugänglich gemacht. Über die Eigenschaft kann dann bestimmt werden, ob ein lesender oder schreibender Zugriff auf die referenzierte Variable erfolgen darf. Natürlich sind auch beide Möglichkeiten miteinander kombinierbar.
Eine Eigenschaft wird durch Zuweisung eines Datentyps (der dem Datentyp der Variable entsprechen muss) zu einem Eigenschaftsnamen angelegt und hat eine ähnliche Struktur wie die Syntax einer Funktion. Die Eigenschaft ist dabei wie eine Variable ansprechbar und ihr kann auch ein Zugriffsmodifizierer zugewiesen werden. Eine Eigenschaft enthält selbst keine Daten, sondern bildet diese auf die referenzierte Variable ab.
Beispiel einer Eigenschaftsdefinition Wohnort für eine private Variable (_wohnort):
public class EigenschaftBeispiel
{
private string _wohnort;
public string Wohnort
{
get
{
return (_wohnort);
}
set
{
_wohnort = "12345 " + value;
}
}
}
Beispiel für den Zugriff auf die oben definierte Eigenschaft Wohnort:
EigenschaftBeispiel instanz = new EigenschaftBeispiel(); instanz.Wohnort = "Musterstadt"; System.Console.WriteLine(instanz.Wohnort); // Ausgabe: 12345 Musterstadt
Würde bei der obigen Definition der Eigenschaft 'Wohnort' der get-Block weggelassen, so würde der lesende Zugriff zu einem Zugriffsfehler führen (im Beispiel in der Zeile, in der die Ausgabe erfolgt).
Neben dem einfachen Setzen oder Lesen einer Eigenschaft, können im set-Block bzw. get-Block auch Operationen ausgeführt werden, beispielweise die Potenzierung eines bei set übergebenen Wertes (value mal Exponent), bevor er der Variablen zugewiesen wird. Das gleiche gilt für get. Theoretisch kann somit ein Zugriff für den Benutzer einer Klasse ganz unerwartete Ergebnisse bringen. Deshalb sollten alle Operationen, die Veränderungen auf einen Wert durchführen über normale Funktionen abgebildet werden. Ausgenommen sind natürlich Wertprüfungen bei set.
--> vorheriges Kapitel Aufzählungen (Enumerationen)
--> nächstes Kapitel Schnittstellen
--> Übersicht Inhalt

