@PrizmMARgh

Статические массивы и шаблоны по числу в C#?

Уже не в первый раз сталкиваюсь с проблемой: мне в 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# я не нашёл ни нормальных статических массивов, ни шаблонов с не-типом.
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
В C# нет const женериков.
И нет массивов фиксированной, на этапе компиляции, длины.
Как вариант -можешь делать stackalloc на вызывающей стороне и передавать Span в метод, чтобы его заполнить
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы