在堆栈上创建固定大小的数组

Ben*_*enj 4 c# arrays stack

我需要一个固定的数据结构(出于性能原因)在堆栈上管理,但行为类似于数组

我知道我可以创建这样的东西:

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();
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但这对于由约 50 个元素组成的结构来说并不是很方便。有没有办法以更方便、更可维护的方式实现这一点?

提前谢谢

Sri*_*vel 5

您可以使用stackalloc关键字在堆栈中分配数组,似乎它会满足您的堆栈分配需求。不幸的是,它要求您处于不安全的环境中。

int* block = stackalloc int[100];
Run Code Online (Sandbox Code Playgroud)