Irgendwie sind mir diese Indexer etwas unhandlich.
Aber so etwas könnte man doch in eine eigene Klasse
packen.- Hier ein erster Versuch:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| class ArrayPropClass { private int maxCount = 100; private ArrayList privateArrayData; public ArrayPropClass(int maxItemsNum) { privateArrayData = new ArrayList(); maxCount = maxItemsNum; }
public int itemsCount { get { return privateArrayData.Count; } }
public object this[int index] { get { if (index < itemsCount) return (privateArrayData[index]); else throw new IndexOutOfRangeException("Maximaler Index bei get überschritten"); } set { if (index > maxCount - 1) throw new IndexOutOfRangeException("Maximaler Index bei set überschritten"); if (index < itemsCount) privateArrayData[index] = value; else { for (int i = itemsCount; ((i<index)&&!(i<0)); i++) { privateArrayData.Add(null); }; privateArrayData.Add(value); } } } } |
Das ist sicher noch nicht ganz zufriedenstellend.
Ich könnte mir vorstellen, daß sich das Ganze als Generic
noch etwas flexibler gestalten lässt. Ausserdem könnte man
dem Konstruktor ein Delegate übergeben, der die
Plausibiltätsprüfung usw. übernimmt.
Schließlich könnte man die Klasse so erweitern, daß das Array
mit einer foreach-Schleife durchlaufen werden kann.
Was haltet ihr von der ganzen Idee ?