diff --git a/ProjectLiner/ProjectLiner/CollectionGenericObjects/AbstractCompany.cs b/ProjectLiner/ProjectLiner/CollectionGenericObjects/AbstractCompany.cs
index 0e550fc..5076923 100644
--- a/ProjectLiner/ProjectLiner/CollectionGenericObjects/AbstractCompany.cs
+++ b/ProjectLiner/ProjectLiner/CollectionGenericObjects/AbstractCompany.cs
@@ -57,9 +57,10 @@ namespace ProjectLiner.CollectionGenericObjects
/// Компания
/// Добавляемый объект
///
- public static bool operator +(AbstractCompany company, DrawningCommonLiner Liner)
+
+ public static int operator +(AbstractCompany company, DrawningCommonLiner airplan)
{
- return company._collection?.Insert(Liner) ?? false;
+ return company._collection.Insert(airplan);
}
///
@@ -68,9 +69,9 @@ namespace ProjectLiner.CollectionGenericObjects
/// Компания
/// Номер удаляемого объекта
///
- public static bool operator -(AbstractCompany company, int position)
+ public static DrawningCommonLiner operator -(AbstractCompany company, int position)
{
- return company._collection?.Remove(position) ?? false;
+ return company._collection.Remove(position);
}
///
diff --git a/ProjectLiner/ProjectLiner/CollectionGenericObjects/ICollectionGenericObjects.cs b/ProjectLiner/ProjectLiner/CollectionGenericObjects/ICollectionGenericObjects.cs
index 9e2ed2f..776e2ad 100644
--- a/ProjectLiner/ProjectLiner/CollectionGenericObjects/ICollectionGenericObjects.cs
+++ b/ProjectLiner/ProjectLiner/CollectionGenericObjects/ICollectionGenericObjects.cs
@@ -22,7 +22,7 @@
///
/// Добавляемый объект
/// true - вставка прошла удачно, false - вставка не удалась
- bool Insert(T obj);
+ int Insert(T obj);
///
/// Добавление объекта в коллекцию на конкретную позицию
@@ -30,14 +30,14 @@
/// Добавляемый объект
/// Позиция
/// true - вставка прошла удачно, false - вставка не удалась
- bool Insert(T obj, int position);
+ int Insert(T obj, int position);
///
/// Удаление объекта из коллекции с конкретной позиции
///
/// Позиция
/// true - удаление прошло удачно, false - удаление не удалось
- bool Remove(int position);
+ T? Remove(int position);
///
/// Получение объекта по позиции
diff --git a/ProjectLiner/ProjectLiner/CollectionGenericObjects/MassiveGenericObjects.cs b/ProjectLiner/ProjectLiner/CollectionGenericObjects/MassiveGenericObjects.cs
index 9ed2684..f668f85 100644
--- a/ProjectLiner/ProjectLiner/CollectionGenericObjects/MassiveGenericObjects.cs
+++ b/ProjectLiner/ProjectLiner/CollectionGenericObjects/MassiveGenericObjects.cs
@@ -12,7 +12,7 @@ namespace ProjectLiner.CollectionGenericObjects
/// Массив объектов, которые храним
///
private T?[] _collection;
-
+
public int Count => _collection.Length;
public int SetMaxCount
@@ -48,63 +48,74 @@ namespace ProjectLiner.CollectionGenericObjects
return _collection[position];
}
- public bool Insert(T obj)
+ public int Insert(T obj)
{
for (int i = 0; i < Count; i++)
{
if (_collection[i] == null)
{
_collection[i] = obj;
- return true;
+ return i;
}
}
- return false;
+ return -1;
}
- public bool Insert(T obj, int position)
+ public int Insert(T obj, int position)
{
if (position < 0 || position >= Count)
- return false;
-
- if (_collection[position] == null)
{
- _collection[position] = obj;
- return true;
+ return -1;
}
- int temp = position + 1;
- while (temp < Count)
+ if (_collection[position] != null)
{
- if (_collection[temp] == null)
+ bool pushed = false;
+ for (int index = position + 1; index < Count; index++)
{
- _collection[temp] = obj;
- return true;
+ if (_collection[index] == null)
+ {
+ position = index;
+ pushed = true;
+ break;
+ }
}
- temp++;
- }
- temp = position - 1;
- while (temp > 0)
- {
- if (_collection[temp] == null)
+ if (!pushed)
{
- _collection[temp] = obj;
- return true;
+ for (int index = position - 1; index >= 0; index--)
+ {
+ if (_collection[index] == null)
+ {
+ position = index;
+ pushed = true;
+ break;
+ }
+ }
+ }
+
+ if (!pushed)
+ {
+ return position;
}
- temp--;
}
- return false;
+ _collection[position] = obj;
+ return position;
}
- public bool Remove(int position)
+ public T? Remove(int position)
{
if (position < 0 || position >= Count)
- return false;
+ {
+ return null;
+ }
+ if (_collection[position] == null) return null;
+
+ T? temp = _collection[position];
_collection[position] = null;
-
- return true;
+ return temp;
}
}
}
\ No newline at end of file
diff --git a/ProjectLiner/ProjectLiner/FormLinerCollection.cs b/ProjectLiner/ProjectLiner/FormLinerCollection.cs
index 56b4370..3e759f4 100644
--- a/ProjectLiner/ProjectLiner/FormLinerCollection.cs
+++ b/ProjectLiner/ProjectLiner/FormLinerCollection.cs
@@ -63,7 +63,7 @@ namespace ProjectLiner
return;
}
- if (_company + drawingLiner)
+ if (_company + drawingLiner != -1)
{
MessageBox.Show("Объект добавлен");
pictureBox.Image = _company.Show();
@@ -123,7 +123,7 @@ namespace ProjectLiner
}
int pos = Convert.ToInt32(maskedTextBoxPosition.Text);
- if (_company - pos)
+ if (_company - pos != null)
{
MessageBox.Show("Объект удален");
pictureBox.Image = _company.Show();