В моем коде мне иногда нужно создавать большие коллекции объектов. Обратите внимание, что мне нужны коллекции, а не массивы, потому что мне может понадобиться добавить элементы позже.Эффективное создание списка <MyObject> с большим количеством предметов
Что такое эффективный способ сделать это?
Предположим, что объекты довольно просты и могут быть созданы быстро с конструктором без параметров по умолчанию. Что-то вроде этого:
class MyObject
{
private int a;
public int A
{
get { return a; }
set { a = value; }
}
}
Конечно, я могу создать свою коллекцию, как это:
List<MyObject> list = new List<MyObject>(knownNumberOfItems);
for (int i = 0; i < knownNumberOfItems; i++)
list.Add(new MyObject());
Но, может быть, есть лучший способ сделать то же самое?
Резюме от обсуждения:
- Там нет более быстрого способа сделать это для ссылочных типов. Вы можете получить некоторые улучшения производительности, используя типы значений.
- Попробуйте выделить больше места изначально, чтобы уменьшить количество перераспределений при добавлении новых элементов позже.
Если это соответствует требованиям, рассмотрите возможность создания MyObject структуры. Это сбрит некоторые накладные расходы – Polity
Just FYI, List подкрепляется массивом. Вы заявили, что не хотите использовать массив из-за проблем с производительностью. Использование списка вместо массива не облегчит эту проблему, потому что в списке будет использоваться массив под капотом. –
Dejas
@Dejas Я думаю, я ничего не могу сделать о перераспределении базового массива. Но я просто не хочу самостоятельно выполнять эти перераспределения. – Bobrovsky