C# StructLayout и распоряжаться - PullRequest
0 голосов
/ 28 апреля 2020

Я разработал StructLayout с именем ReceiveBuffer, а внутри ReceiveBuffer у меня есть неуправляемый тип массива для хранения данных. Код показан ниже:

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
    public struct ReceiveBuffer
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public char[] Data;
    }

Я хочу реализовать метод IDisposable внутри этой структуры, чтобы правильно располагать ReceiveBuffer всякий раз, когда он мне не нужен. Я проверил MSDN для некоторых примеров, но большинство случаев используются в классе вместо struct. Я не уверен, как управлять этим в структуре. Как мне реализовать IDisposible в такой структуре?

1 Ответ

2 голосов
/ 28 апреля 2020

У меня есть неуправляемый тип массива для хранения данных.

Нет, у вас нет. Это управляемый массив с инструкциями маршала.

Я не уверен, как управлять этим в структуре. Как мне реализовать IDisposible в такой структуре?

У вас нет. Во-первых, структуры и одноразовые, подобные этому, ЧРЕЗВЫЧАЙНО пробламети c из-за множества операций копирования, происходящих на структурах. Во-вторых, все ваше предположение о наличии неуправляемого массива неверно.

...