C# Problem mit indexer

georg_willi

Cadet 4th Year
Registriert
Juli 2004
Beiträge
110
Abend,

ich habe gerade ein Problem mit einem indexer
Code:
public Medium this[string name]
        {
            get
            {
               if ((Bestand.IndexOf(FindMedium(name))) == (Bestand.LastIndexOf(FindMedium(name))))//Problem
               {
                   return FindMedium(name);
               }
               else
               {
                   throw new DuplicateWaitObjectException("Der Titel des Mediums tritt mehr mals auf");
               }
            }
            set { /* set the specified index to value here */ }
        }
In der ArrayList Bestand soll nachgesehen werden, ob noch weitere Elemente den übergebenen name haben.
Die Methode FindMedium liefert ein Objekt vom Typ Medium. Allerdings nur das erste, das gefunden wird.
set ist hierfür unwichtig.

Das Problem: ich habe zum Test zwei Medien mit demselben name in die ArrayList eingefügt, es wird aber keine Exception geworfen, sondern stur das erste Vorkommen des Mediums zurückgegeben. Die Medien liegen hintereinander in Bestand, die Indizes sind also unterschiedlich. Darauf beruht halt meine Idee, die ganze Sache abzufangen.

Schon mal danke im Vorraus
 
Hi welche .net Version verwendest Du? In 3.5 kannst Du dafuer Linq verwenden.

Wenn Du das nicht verwenden willst/Kannst, faellt mir zu nachtschlafender Zeit nur ein das du nach dem ersten finden dir den Index merkst und ab da manuell weitersuchst.

Eine andere moeglichkeit ist, von vorne herein zu verhindern das eine Medium ein 2. Mal in der Arraylist aufgenommen wird (im Set pruefen.)

Dann noch eine frage, warum verwendest du keine Generig List<T> bzw. ein Dictionary<T,T>? Wobei key der name ist. (So sparts dir auch das Casten).

EDIT: Oder Du erweiterst deine Klasse Bestand um Dein eigenes Find, welches ne exception liefert sofer es mehr als ein Medium gibt.
 
Zuletzt bearbeitet:
Zurück
Oben