Ребят, подскажите, почему при добавлении элемента в методе InsertElement() индекс выходит за границы?
namespace CSRIerarchy
{
class Container
{
public static Sofa[] product={};
public Container()
{
}
public static void InsertElement(Sofa value)
{
Sofa[] tmp = new Sofa[product.Length+1];
for (int i = 0; i <product.Length; i++)
{
tmp[i] = product[i];
}
product = tmp;
product[product.Length+1] = value; // Конкретно здесь ошибка.
}
public static void DeleteElement( int index)
{
if (index < 0 || index >= product.Length)
{
Console.WriteLine("Индекс за пределами массива");
return;
}
else
{
var newArray = new Sofa[product.Length - 1];
for (int i = 0; i < product.Length; i++)
{
if (i < index)
{
newArray[i] = product[i];
}
else if (i > index)
{
newArray[i - 1] = product[i];
}
}
}
}
public void SortArray()
{
}
}
}
Вот вызов метода в Main
class Program : Container
{
public static void Main(String[] args)
{
Sofa a = new Sofa("CononeSofa",3244.12,"Для гостинной","Красное дерево, сталь,полиэстер",120,150,"Двухместный");
Sofa b = new Sofa("CononeSofa", 3244.12, "Для гостинной", "Красное дерево, сталь,полиэстер", 120, 150, "Двухместный");
Sofa c = new Sofa("CononeSofa", 3244.12, "Для гостинной", "Красное дерево, сталь,полиэстер", 120, 150, "Двухместный");
InsertElement(a);
//DeleteElement(0);
}
}
Индекс последнего элемента - (длина - 1)
.
public static void InsertElement(Sofa value)
{
...
product[product.Length - 1] = value; // больше нет ошибки
}
public static void DeleteElement( int index)
{
...
product = newArray;
}
Поскольку это не выглядит как учебное задание, вам стоит использовать List<T>
, который умеет динамически расти.
class Container
{
List<Sofa> product = new List<Sofa>();
public void InsertElement(Sofa value)
{
product.Add(value);
}
public static void DeleteElement(int index)
{
if (index < 0 || index >= product.Length)
{
Console.WriteLine("Индекс за пределами массива");
return;
}
product.RemoveAt(index);
}
}
А если это вдруг учебное задание, то перечитайте лекцию.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Дано около 6000 5-ти значных чисел их нужно между собой умножать и сравниватьЧто лучше использовать для хранения массив,лист,или строку? Точное...
Я начинающий программист, поэтому хочу выбрать язык программированияХочу писать как веб так и gui приложения
Есть сайт , на нем есть ссылка, при нажатии на которую происходит скролл, то есть этот код:
Здравствуйте, сделал столкновение двух правильных многоугольников с помощью теоремы о разделяющих осяхможет подскажет кто, как переделать...