Вопрос:
Какова производительность и накладные расходы памяти при использовании массива длиной 1 вместо значения напрямую?
private Item[] item = new Item[1];
vs.
private Item item;
Использование:
У меня есть абстрактный базовый класс ItemHolder, который наследуется как классами SingleItemHolder и MultipleItemHolder. Первый содержит один элемент в качестве основного значения, а второй содержит список. Чтобы получить доступ к значению, я вижу три возможности:
Добавление двух методов к базовому классу
public abstract Item GetItem();
public abstract Item[] GetItems(int amount);
Недостаток, поскольку у SingleItemHolder есть ненужный метод для получения нескольких элементов при наличии только одного для каждого определения.
Другим методом будет реализация только второго метода и передача одного значения в виде массива длины 1
public override Item[] GetItems()
{
return new[] { storedItem };
}
или сохранение одного значения в виде массива длины 1 на первом месте
private Item[] item = new Item[1];
public override Item[] GetItems()
{
return item;
}
Держатели как для нескольких предметов, так и для одного предмета используются одинаково часто и довольно часто в целом. Методы, о которых идет речь, вполне могут называться десятки раз за игровой кадр со всего игрового мира. Поэтому мне интересно, какая версия была бы наиболее эффективной или, если быть более общим, какая разница в накладных расходах для массива длины 1 над одним значением.