PIbd-23-Kondratev-N.D.-Gaso.../GasolineTanker/ProjectGasolineTanker/Generic/SetGeneric.cs
2024-10-03 00:44:06 +03:00

98 lines
2.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectGasolineTanker.Generic
{
internal class SetGeneric<T>
where T : class
{
// список объектов
private readonly List<T?> _places;
// кол-во объектов
public int Count => _places.Count;
// максимальное количество
private readonly int _maxCount;
public SetGeneric(int count)
{
_maxCount = count;
_places = new List<T?>(count);
}
// Добавление объекта в начало
public int Insert(T truck)
{
_places.Insert(0, truck);
return 0;
}
// Добавление объекта в набор на конкретную позицию
public bool Insert(T truck, int position)
{
// TODO проверка позиции
if (position < 0 || position >= Count || Count >= _maxCount)
{
return false;
}
// TODO вставка по позиции
_places.Insert(position, truck);
return true;
}
// Удаление объекта из набора с конкретной позиции
public bool Remove(int position)
{
// TODO проверка позиции
if (position < 0 || position >= Count)
{
return false;
}
// TODO удаление объекта из списка
_places.RemoveAt(position);
return true;
}
// Получение объекта из набора по позиции
public T? this[int position]
{
get
{
// TODO проверка позиции
if (position < 0 || position >= Count)
{
return null;
}
return _places[position];
}
set
{
// TODO проверка позиции
if (position < 0 || position > Count || Count >= _maxCount)
{
return;
}
// TODO вставка в список по позиции
_places.Insert(position, value);
}
}
// Проход по списку
public IEnumerable<T?> GetTruck(int? maxTruck = null)
{
for (int i = 0; i < _places.Count; ++i)
{
yield return _places[i];
if (maxTruck.HasValue && i == maxTruck.Value)
{
yield break;
}
}
}
}
}