using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ProjectElectricLocomotive.CollectionGenericObjects { public class MassiveGenericObjects : ICollectionGenericObjects where T : class { /// /// Массив объектов, которые храним /// private T?[] _collection; public int Count => _collection.Length; public int SetMaxCount { set { if (value > 0) { if (_collection.Length > 0) { Array.Resize(ref _collection, value); } else { _collection = new T?[value]; } } } } /// /// Конструктор /// public MassiveGenericObjects() { _collection = Array.Empty(); } public T? Get(int position) { //TODO проверка позиции if(position < 0) { return null; } return _collection[position]; } public bool Insert(T obj) { if(obj == null){ return false; } for(int i = 0; i < _collection.Length; i++) { if (_collection[i] == null) { _collection[i] = obj; return true; } } return false; } public bool Insert(T obj, int position) { if(obj == null || position < 0) { return false; } if (_collection[position] != null) { for(int i = position; i < _collection.Length; i++) { if (_collection[i] == null) { _collection[i] = obj; return true; } } for(int i = position; i > 0; i--) { if (_collection[i] == null) { _collection[i] = obj; return true; } } } // TODO проверка позиции // TODO проверка, что элемент массива по этой позиции пустой, если нет, то // ищется свободное место после этой позиции и идет вставка туда // если нет после, ищем до // TODO вставка return false; } public bool Remove(int position) { if(position < 0) { return false; } else { _collection[position] = null; } // TODO проверка позиции // TODO удаление объекта из массива, присвоив элементу массива значение null return true; } } }