мне нужна фиксированная структура данных, которая (по соображениям производительности) управляются на стеке, но ведет себя как массивСоздание массива фиксированного размера на стек
Я знаю, что я могу создать что-то вроде этого:
using System;
namespace X
{
public sealed struct CustomArray<T>
{
private const Int32 n = 2;
private T _field_1;
private T _field_2;
// ...
private T _field_n;
public T this[Int32 idx]
{
get
{
switch(idx)
{
case (0): return _field_1;
case (1): return _field_2;
// ...
case (n): return _field_n;
default: throw new IndexOutOfRangeException();
}
}
set
{
switch(idx)
{
case (0): _field_1 = value; break;
case (1): _field_2 = value; break;
// ...
case (n): _field_n = value; break;
default: throw new IndexOutOfRangeException();
}
}
}
}
}
, но это не очень удобно для структур, состоящих из ~ 50 элементов. есть ли способ достичь этого более удобным и удобным образом?
благодаря вперед
Вы уверены, что кучи выделяется массив будет снижать производительность вашей заявки? Если ваша 'struct' имеет короткий срок службы и больше не будет корней для вашего массива, GC, даже если это произойдет в критическом для производительности разделе вашей программы, будет очень быстрым. – Spo1ler
У меня есть сотни тысяч объектов, управляемых в куче, поэтому я стараюсь избегать операций вставки/удаления на куче как можно больше – Benj