Indexer

Mit einem Indexer können zu einer Klasse indizierte Zugriffe programmiert werden, ähnlich wie sie bei den Arrays definiert sind. Im Beispiel wird ein internes Arrays von Strings definiert. Der Indexer erlaubt den direkten Zugang auf dieses Array, indem er den übergebenen Index auf den Zugriff des internen Arrays umsetzt.

        
        // Interne Objekte
        private string[] _astrCartoons = new string[] {
            "Tim und Struppi",      // Platz 1
            "Asterix und Obelix",   // Platz 2
            "Micky und Goofy",      // Platz 3
            "Road Runner",          // Platz 4
            "Fix und Foxi",         // Platz 5
            "Donald Duck" };        // Platz 6

        // Indexer
        public string this[uint uiIndex] {

            // getter
            get {
                // Bereichsprüfung des Index
                if (uiIndex < 1 || uiIndex > _astrCartoons.Length) {
                    throw new ArgumentOutOfRangeException();
                } else {
                    // Auslesen des entsprechenden Wertes
                    return _astrCartoons[uiIndex-1];
                }
            }

            // setter
            set {
                // Bereichsprüfung des Index
                if (uiIndex < 1 || uiIndex > _astrCartoons.Length) {
                    throw new ArgumentOutOfRangeException();
                } else {
                    // Auslesen des entsprechenden Wertes
                    _astrCartoons[uiIndex-1] = value;
                }
            }
        }

Ein Objekt der Klasse CIndexer wird instanziert und die Werte des Arrays _astrCartoons[] werden mittels Indexer ausgelesen. Mit der getter Methode wird der entsprechende Wert ausgelesen, falls der Index grösser als 6 ist wird eine ArgumentOutOfRangeException ausgelöst.

            
CIndexer objIndexer = new CIndexer();
Console.WriteLine("Auf dem 1.Platz ist: " + objIndexer[1]);
Console.WriteLine("Auf dem 2.Platz ist: " + objIndexer[2]);
Console.WriteLine("Auf dem 3.Platz ist: " + objIndexer[3]);


Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Log Out / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Log Out / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Log Out / Ändern )

Verbinde mit %s

Follow

Get every new post delivered to your Inbox.