Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Visual C# 2012 Grundkurs

Indexers

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit Indexers können Objekte von Klassen wie Arrays indiziert werden. Dabei besteht allerdings die Möglichkeit, jeden beliebigen Datentyp als Indexwert zu verwenden.

Transkript

In diesem Abschnitt möchte ich ein sehr elegantes Konstrukt von C# vorstellen. Das sind die Indexer. Um dieses Konstrukt zu verstehen, möchte ich einmal selbst so eine eigen geschnitzte Dictionary-Klasse schreiben. Sie brauchen diese Klasse nicht zu übernehmen, weil .NET hat wunderschöne verschiedene Dictionary-Klassen, die Sie benutzen können und die wesentlich leistungsfähiger sind, als das, was ich jetzt hier programmiere. Aber ich möchte einfach nur zeigen, dieses syntakische Mittel der Indexer und wie elegant das ist. Nach dieser Vorrede gehen wir an den Code. Ich nenne das Ganze jetzt mal "Dictionary" und in diesem Dictionary,da gibt es jetzt ein Integer Array, das soll jetzt einmal 10 Elemente erfassen. Es gibt jetzt diese Key Values, da sind die Schlüssel drin, unter denen ich jetzt die Integer-Werte abrufen kann. Jetzt brauche ich ein bisschen Code, um Wertepaare hinzuzufügen und wieder herauszulesen. Gehen wir mal her und schreiben so was wie "Void Set AND Key AND Value" und das machen wir jetzt ganz hemdsärmelig mit einer Vorschleife. So, wenn jetzt so ein freier Key noch zu haben ist, dann kann ich diesen Key belegen. Und nicht nur den Key, sondern unter dem gleichen Index lege ich dann eben auch den Wert ab. Und wenn keiner mehr frei war, dann kann ich das ja mit einer Exception irgendwie milden. Ok. So, und jetzt muss ich einen Code schreiben, der das Ganze wieder lesen kann. Ich kopier mir eben gerade mal diese Schleife. Also, ich geh jetzt alle Keys durch, und wenn der Key, der hier abgelegt ist, eben dem Key entspricht, den ich übergeben habe, dann gebe ich den Wert zurück, der unter dem gleichen Index abgelegt wurde. So, das ist der Zugriff. Aha. Und auch hier ist es wieder, wenn also der Schlüssel nicht gefunden wurde, dann muss ich eben hier mit einer Exception reagieren. Gut, das ist jetzt mein Code. Ich könnte jetzt diese beiden Methoden öffentlich machen und könnte eben das Dictionary mit diesen Methoden benutzen. Aber ich habe ja versprochen, dass es etwas Eleganteres gibt und dieses Elegantere das sieht aus wie ein Property, also "Public.INT", und der Name dieses Propertys heißt jetzt "This". Und ansonsten ist es so, dass ich jetzt hier eine eckige Klammer öffne und den Parameter angebe. Das muss nicht einer sein, das können auch mehrere sein. Aber in dem Fall bei uns ist es ja ein Parameter, das ist eben der "String Key". So. Und genau wie bei einem Property kann ich jetzt hier einen Getter und einen Setter definieren. Und genau wie bei einem Property habe ich bei einem Setter ja dann dieses Value-Schlüsselwort, das dann diesen Integer-Wert bezeichnet, mit dem der Property-Wert gesetzt wird. Und genau so funktioniert es bei einem Indexer. Aber gehen wir doch erst mal zu dem Getter. Der Getter muss mir also jetzt unter diesem Key einen Wert zurückgeben, und das kann ich eben machen, indem ich diese Funktion "Get" hier aufrufe und damit wäre der Getter eigentlich schon wieder erledigt. Aber im Prinzip bräuchte ich diese Methode hier gar nicht. Was ich machen könnte, und das werde ich jetzt auch tun, das ist, dass ich diesen Code hier einfach kopiere, und dann ich diese Methode hier komplett vergessen. Und genau so ist es beim Setter. Nur, da sieht es noch mal ein bisschen anders aus: Der Wert, der übergeben wird –– Nein, es sieht gar nicht anders aus: Hier habe ich einen Wert "Value" definiert. Und in diesem Indexer ist der Wert "Value" nämlich implizit gegeben. Hier sieht man das durch die blaue Einfärbung. "Value" ist innerhalb von einem Setter nämlich ein Schlüsselwort. Dieses Schlüsselwort bezeichnet eben den Wert, der an diesen Indexer übergeben wurde. Entsprechend kann ich jetzt mir hier diese Methode sparen. Und jetzt habe ich eine Klasse, deren Code mehr oder minder aus einem Indexer besteht. Jetzt geht es nur noch darum, diesen Code einzusetzen. Ich lege jetzt mal so ein "My Dictionary" an. Und jetzt kann ich dieses Dictionary benutzen. Ich kann also jetzt hier, unter dem Wert "Hallo" z.B.,  irgendeinen Wert ablegen. Und diesen Wert, den kann ich jetzt wieder abrufen und jetzt schauen wir mal, ob das Ganze funktioniert hat, und ich geb das Ganze mal raus auf der Konsole. Ok, starten wir das Ganze mal. Jetzt wird mir hier gemeldet, dass ich keinen Platz mehr habe. Also muss ich gerade mal zusehen, warum das so ist. Hier muss natürlich noch ein Return rein. Starten wir es noch mal. Und jetzt funktioniert der Code so, wie wir es erwartet haben. Also, das heißt, den Wert, den ich reingegeben habe, den hole ich auch wieder raus. Und jetzt kann ich natürlich mal ausprobieren, was passiert, wenn ich hier irgendeinen anderen Wert abrufen will und dann bekomme ich eben diese Exception, dass der Schlüssel nicht gefunden worden ist. Jetzt könnte man natürlich so in Dictionary auch noch eine Methode "Contains" verpassen, damit ich sicherstellen kann, dass der Schlüssel auch wirklich drin ist und so weiter und so fort. Was ich aber zeigen wollte in diesem Abschnitt, das sind die Indexer. Diese Indexer können wir verwenden, um Werte zu setzen und Werte wieder abzurufen. Diese Indexer sind ein wunderschönes, elegantes syntaktisches Mittel, um solche Dinge zu bewerkstelligen.

Visual C# 2012 Grundkurs

Schreiben Sie eigene Programme in C# und lernen Sie dazu alle Schlüsselwörter und die meisten Konstrukte kennen, um sicher mit dieser Programmierspreche umzugehen.

7 Std. 1 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!