Константный массив размера Маршалла - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь сделать массив выделенным в структуре.Ну указатель я имею ввиду.Но я бы хотел, чтобы распределение выполнялось без дополнительного кода, потому что я знаю размер, когда пишу код (я не хочу делать кучу 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 голосов
/ 15 декабря 2018
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();
    }
}

Мне нужно было всего лишь небольшое изменение в конце!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...