29.04.2014 Aufrufe

Leseprobe

Leseprobe

Leseprobe

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

78<br />

Indizierer<br />

public int SquareFeet;<br />

Für einfache Variablen ist das auch durchaus in Ordnung. Wenn Sie allerdings<br />

Details über die innere Speicherstruktur Ihrer Klasse verbergen wollen, dann sollten<br />

Sie Zugriffsfunktionen verwenden. Die set-Funktion bekommt den neuen<br />

Wert als Parameter value übergeben (wobei dieser Name fix vorgegeben ist –<br />

siehe Zeile 10 des Listings).<br />

Der Hauptzweck von Zugriffsfunktionen liegt natürlich nicht im Verbergen innerer<br />

Speicherstrukturen, sondern zum einen in der Möglichkeit, Lese- oder<br />

Schreibzugriffe explizit zu sperren:<br />

• get implementiert, set nicht: Die Eigenschaft kann außerhalb der Klassendefinition<br />

nur gelesen, nicht aber verändert werden.<br />

• set implementiert, get nicht: Die Eigenschaft kann außerhalb der Klassendefinition<br />

nur geschrieben, nicht aber wieder gelesen werden.<br />

• get und set implementiert: Der Wert der Eigenschaft lässt sich außerhalb der<br />

Klassendefinition sowohl lesen als auch verändern.<br />

Der andere und mindestens genauso wichtige Vorteil: set kann selbstverständlich<br />

Prüfungen enthalten und beispielsweise dafür sorgen, dass das Haus nicht versehentlich<br />

eine negative Quadratmeterzahl erhält; hinter get kann sich ebenso gut<br />

eine dynamische Eigenschaft verstecken – mithin ein Wert, der erst auf Anforderung<br />

berechnet und dann eventuell auch noch verifiziert wird. Eine Klasse House<br />

könnte bei Leseanforderungen beispielsweise die Quadratmeterzahlen sämtlicher<br />

in einer eigenen Liste gehaltenen Räume zusammenrechnen – und eine Klasse<br />

Picture ein Bild erst dann laden, wenn das Programm die Daten tatsächlich benötigt.<br />

5.4 Indizierer<br />

Wollten Sie Ihre Klassen nicht schon immer einmal auf einfachste Weise mit indizierten<br />

Zugriffen ausstatten – wie bei den Elementen eines Arrays? Mit C# geht<br />

das praktisch ohne Drumherum. Die grundlegende Syntax sieht so aus:<br />

Attribute Modifizierer Deklarator { Deklarationen }<br />

Ein einfaches Beispiel für eine Implementation:<br />

public string this[int nIndex]<br />

{<br />

get { ... }<br />

set { ... }<br />

}

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!