马歇尔大小常量数组

时间:2018-12-15 10:56:40

标签: c# marshalling stack-allocation

我正在尝试在结构中分配堆栈的数组。好吧,我的意思是指针。但是我希望不用额外的代码即可完成分配,因为我在编写代码时就知道大小(创建结构时,我不想做一堆new)。 如果我什至没有unsafe上下文也能做到,那就太完美了。 我尝试了一些东西,但是效果不佳。我是C#的新手,所以也许有一种我看不到的方法!

public struct TestValue {int value; }

[StructLayout(LayoutKind.Sequential)]
public struct TestArray {
   [MarshalAs(UnmanagedType.ByValArray, SizeConst=128)] public TestValue[] s1;
}

public struct TestSpan
{
    Span<TestValue> data= stackalloc TestValue[10];
}

1 个答案:

答案 0 :(得分:0)

using System.Runtime.InteropServices;

public struct TestValue {int value; }

[StructLayout(LayoutKind.Sequential)]
public struct TestArray {
   [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst=128)] public TestValue[] s1;
}

public class Foo
{
    void test()
    {
        TestArray test = new TestArray();
        test.s1[10] = new TestValue();
    }
}

最后我只需要做一点改动!