C # StructLayout и удаление

Я разработал 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 в такой структуре?


person CivilKen    schedule 28.04.2020    source источник
comment
Зачем вам нужно внедрять IDispose - вы не обертываете ничего, что реализует IDispose или используете неуправляемый ресурс - см. stackoverflow.com/questions/1125693/   -  person auburg    schedule 28.04.2020


Ответы (1)


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

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

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

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

person TomTom    schedule 28.04.2020