Index-Operator [] überladen

jccTeq

Erfahrenes Mitglied
Hey Leute,

wie war noch mal die Syntax um den Operator [ ] für ein Objekt zu überladen, bzw. anders ausgedrückt, um einer Klasse den Operator [ ] zu geben? Ich möchte aus einer Liste von Daten in einem Objekt ein bestimmtes Datum haben, auf das ich per Index-Operator zugreifen möchte. Ähm... man is das kompliziert... Also im Prinzip so:

Mein Objekt heißt 'bla', enthält eine ArrayList anderer Objekte, die jeweils einen String beinhalten, der da 'name' heißt. Nun möchte ich per [ ] von 'bla' das entsprechende Objekt aus dessen ArrayList zurück geliefert bekommen:

bla["hallo"] - soll mir das Objekt mit dem String 'name' = "hallo" aus bla's ArrayList zurück liefern.

Dafür muss ich 'bla' erstmal den [ ] - Operator geben. Also wie mach ich das?

Ach ja, in C# das ganze, bitte... danke...

Puh... hoffe, ich hab das einigermaßen verständlich erklärt. Sorry, hab gerade drei Wochen Urlaub hinter mir... davon muss ich mich erstmal erholen.


Gruß,
Hendrik
 
Hallo
Code:
public Object this[int index]
{
 get
 {
   return this.arraylist[index]
 }
 set
 {
   ...
 }
}

Geht natürlich auch mit einem String Indexer (so heisst das Teil übrigens).

Gruss kahuna
 
Kann man eigentlich auch andere Index-Propertys erstellen?
Ohne einen Array public zu legen.

so das man das ein Ansprechen
Objekt.Eigenschaft[Index] = Wert
möglich ist.

Unter VB6 ist es definitiv möglich.
 
Aber sicher. Das geht mit oben genannter Property. Du kannst in den eckigen Klammern natürlich jeden beliebigen Datentyp eintragen und im getter oder setter tun und lassen, was du für richtig hältst. Damit lässt sich einiges anstellen. Du brauchst kein Array public zu machen, dafür.
 
Normale Indexer konnte ich erstellen die ich dann in der Form
Objektname[Index]= Wert
angesprochen habe.

Was allerdings nicht geht (Möglichweise ist die Syntax falsch):

Code:
public Object Eigenschaft[int index]
{
 get
 {
   return this.arraylist[index]
 }
 set
 {
   ...
 }
}

Mit dem Indexer für die Klasse(this) kann auch immer nur einen Array implementiert werden.
 
Das geht meines Erachtens ohne weiteres nicht. Du müsstest dann "Eigenschaft" als Member-Objekt der Klasse anlegen und der Klasse des Objektes "Eigenschaft" wiederum den this[int index] Indexer geben. So würde ich das machen...

Bitte belehrt mich eines besseren, wenn ich damit falsch liege!
 
Zurück