Property

Aus Das Sopra Wiki
Wechseln zu: Navigation, Suche

Eine Property ist ein Feld, das nach außen wie eine öffentliche Variable aussieht. Implementiert ist sie allerdings als eine Methode. Dadurch ist die Kapselung gewährleistet.

Es gibt zwei Möglichkeiten, eine Property zu definieren:

  • Eine ausführliche, in der man statt direkt eine Variable zurückgeben bzw. zuweisen auch Datenbankzugriffe und andere Berechnungen ausführen kann
public String Property
{
    get { return mEineVariable; }
    set { mEineVariable = value; }
}
  • und eine automatisch generierte, in der nur Variablen zurückgegeben bzw. zugeweisen werden können
public String Property { get; set;}

Man kann dabei eine Variable nach außen hin nur lesbar machen:

public String Property
{
    get { return mEineVariable; }
    private set { mEineVariable = value; }
}

bzw kurz:

public String Property { get; private set;}

Properties sind aufgrund der kurzen Länge gute Kandidaten für Inlining.

Probleme

Man sollte beachten, dass auch wenn der Zugriff wie eine Variable aussieht es in Wirklichkeit eine Methode ist. Da der Benutzer einer Property aber von einer Variablen ausgehen kann und wird, sollte sie

  • beim Lesen keine Seiteneffekte auslösen
    • also keine nach außen hin sichtbaren Änderungen durchführen
  • bei zwei Aufrufen direkt hintereinander beide Male das gleiche Ergebnis liefern (vorausgesetzt, sie wurde zwischenzeitlich nicht von einem anderen Thread geändert)
    • Als Gegenbeispiel kann man DateTime.Now nennen. Allerdings wird die Entscheidung, dies als Property zu implementieren vom .Net-Team als Fehler angesehen
  • Properties können auch komplexe Aktionen ausführen um an einen Wert zu kommen. Werte können z.B. auch aus einer Datenbank ausgelesen werden.

Siehe auch

  1. Modifizierer in C#