C# StructLayout 和处置

C# StructLayout and dispose

我设计了一个名为ReceiveBuffer的StructLayout,在ReceiveBuffer内部,我有一个非托管类型的数组来存储数据。代码如下所示。

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

我想在此结构中实现 IDisposable 方法,以便在不需要时正确处理 ReceiveBuffer。我已经查看了 MSDN 中的一些示例,但大多数情况都用于 class 而不是结构。我不确定如何在结构中管理它。如何在这种结构中实现 IDisposible?

I have an unmanaged type of array to store data.

不,你没有。它是一个带有 Marshal 指令的托管数组。

I'm not sure how to manage that in struct. How do I implement IDisposible in such struct?

你没有。首先,由于在结构上发生了大量复制操作,因此像这样的结构和一次性结构非常有问题。其次,您对非托管数组的整个假设是错误的。