2015-03-09 3 views
0

В настоящее время у меня есть класс, который содержит массив и целое число.Можно ли получить массив?

У меня есть миллионы этих объектов, и я хотел бы сохранить память, просто имея массив, поэтому я сохраняю 12 байт для каждого объекта (не выделяя оболочку класса для каждого из них). Это сэкономит массу памяти.

К сожалению, мне также нужно сохранить целое число. Я думал просто хранить его в первом индексе, но он немного грязный. Я надеялся, что я могу просто извлечь из массива и вставить int-член в подкласс, но, видимо, это запрещено компилятором.

Есть ли альтернативы? Я полагаю, что я мог бы просто скопировать и вставить класс массива из структуры sourceource и добавить мое свойство, но это похоже на излишний.

+0

Nope. Используйте композицию вместо наследования. Если вам нужен синтаксис типа массива, выполните указатель. –

+0

Проблема с композицией заключается в том, что объект имеет 12 байтов, поэтому объект с массивом имеет 24 байта (потому что массив также является ссылочным типом), поэтому состав - это то, что я сейчас делаю, что мне бы хотелось получить альтернативу для экономии памяти. –

+0

Я понимаю, что вы не можете просто использовать '.Length', потому что ваши массивы могут содержать меньше элементов, чем объявленный размер массива? – mhawke

ответ

1

Вы не можете извлечь из массива (и «скопировать и вставить класс массива из структуры ресурсов источника», скорее всего, вам не поможет, так как массивы очень интегрированы в язык/фреймворк).

Одним из вариантов может быть использование struct с целыми числами и массив - вы получите большую боль, чтобы иметь дело с struct, но если осторожным это обеспечит вам именно то, что вы ищете (если «целое значение» изменяемые или массив нужно изменить размер - я бы настоятельно рекомендовал забыть, что вы видели такое предложение).

Смежные вопросы