Интерфейсы коллекций
Интерфейс IList
Интерфейс IList является производным от интерфейса iCollection и в нем введены методы для добавления элемента в список, удаления его из списка и т.д.
_gc _interface IList: public ICollection // сборщик мусора – IList: ICollection { _property bool get_IsFixedSize(); // логический _property bool get_IsReadOnly(); // логический _property Object* get_Item(int index); // индекс _property void set_Item(int index, Object*); // индекс, // Объект * int Add(0bject* value); // Добавить значение void Clear(); bool Contains(Object* value); // Содержит ли значение int IndexOf(Object* value); // значение void Insert(int index, Object* value); // Вставка (int индекс, // Object* значение); void Remove(Object* value); // Удалить значение void RemoveAt(int index); // индекс };
В программе stringList продемонстрировано использование индексатора get_Item и методов Contains (Содержит), Add (Добавить), Remove (Удалить) и RemoveAt.
static void ShowArray(ArrayList *pArray) { for (int i = 0; i < pArray › Count; i++) { Console::WriteLine( "pArray › get_Item({0}) = {!}", _box (i), pArray › get_Item(i)); } } static void AddString(String *pStr) { if (pList › Contains(pStr)) // если содержит throw new Exception( // новое Исключение String::Format("list contains {0}", pStr)); // Формат:: ("список содержит") pList › Add(pStr); // Добавить } i static void RemoveString(String *pStr) { if (pList › Contains(pStr)) // если содержит pList › Remove(pStr); // Удалить else Console::WriteLine( "List does not contain {0}", pStr); // Список // не содержит } static void RemoveAtfint nlndex) { try // попытка { pList › RemoveAt(nIndex); } catch (ArgumentOutOfRangeException *) { Console::WriteLine( "No element at index {0}", _box(nlndex)); // Нет элемента //с индексом } }