Уже не в первый раз сталкиваюсь с проблемой: мне в C# нужно реализовать класс, один из методов которого должен возвращать небольшой массив из N = ~5 float. Более того, для каждого отдельного экземпляра N = const. Я мог бы просто возвращать динамический массив, но как я заметил из замеров, выделение памяти под небольшой массив и его же удаление занимает много времени (по крайней мере, в Debug-сборке). В другом месте я заменил new на stackalloc и это ускорило метод примерно вдвое. Я хотел бы применить нечто подобное и для нескольких других классов, например:
class ConnectedPoint : Point {
public ConnectedPoint[] nbs;
public short[] ids;
public ConnectedPoint(Vector2 center_) : base(center_) {
nbs = new ConnectedPoint[4] { null, null, null, null };
ids = new short[4] { 0, 0, 0, 0 };
}
...
}
Ну и как описал выше, нечто подобное хотел бы применить для возврата небольшого массива элементов.
Итак - как же реализовать нечто подобное в рамках C#? С C++ всё было бы просто, я бы мог использовать float vals[4]; и template class someClass{...};, но в C# я не нашёл ни нормальных статических массивов, ни шаблонов с не-типом.