using System; using System.Collections.Generic; using System.Diagnostics.Eventing.Reader; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Cruiser.Generics { /// /// Параметризованный набор объектов /// /// internal class SetGeneric where T : class { /// /// Массив объектов, которые храним /// private readonly T?[] _places; /// /// Количество объектов в массиве /// public int Count => _places.Length; /// /// Конструктор /// /// public SetGeneric(int count) { _places = new T?[count]; } /// /// Добавление объекта в набор /// /// Добавляемый лайнер /// public int Insert(T cruiser) { int zero = 0; for (; _places[zero] != null;) { zero++; if (zero == _places.Length) { return -1; } } for (int i = zero; i > 0; i--) { _places[i] = _places[i - 1]; } _places[0] = cruiser; return 0; } /// /// Удаление объекта из набора с конкретной позиции /// /// /// public bool Remove(int position) { if (position < 0 || position > _places.Length) { return false; } _places[position] = null; return true; } /// /// Добавление объекта в набор на конкретную позицию /// /// Добавляемый автомобиль /// Позиция /// public int Insert(T cruiser, int position) { if (position < 0 || position > _places.Length) { return 0; } if (_places.Length != null) { int zero = position; while (_places[zero] != null) { zero++; return -1; } } _places[position] = cruiser; return position; } /// /// Получение объекта из набора по позиции /// /// /// public T? Get(int position) { if (position < 0 || position > _places.Length) { return null; } return _places[position]; } } }