В коллекциях и списках .net работает автоматическое изменение размера, когда им не хватает места. Чтобы сделать это эффективным, они не просто меняют размер на 1 каждый раз, когда заканчиваются, они используют внутренний алгоритм для изменения размера и оставляют некоторое дополнительное пространство, цель состоит в том, чтобы им не приходилось слишком часто изменять размер.
То, что вы видите здесь, - это то, что коллекция сериализуется, причем все дополнительное пространство тоже сериализуется. это происходит потому, что сериализация хранит коллекцию в точности так, как она есть, поэтому, когда вы десериализируете ее, вы получите то же самое обратно с тем же количеством оставшегося внутреннего пространства.
Если вы используете Список, вы можете проверить внутренне зарезервированное пространство, посмотрев на свойство Capacity
.
Если вы хотите удалить лишние пробелы перед сериализацией коллекции, которую вы можете вызвать.
myStuff.Capacity = myStuff.Count;
Это установит доступную емкость равной количеству содержащихся элементов, поэтому не будет зарезервированного пространства.
К сожалению, если вы используете коллекцию, Capacity недоступен, вам просто нужно довериться коллекции, чтобы сделать ее внутреннее изменение.
В любом случае, я бы не стал слишком беспокоиться об этом, если бы вам не нужно было по-настоящему эффективно использовать пространство. Если вы это сделаете, используйте вместо этого массив фиксированного размера.