0

我设计了一个名为 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 上查看了一些示例,但大多数情况是在类中使用而不是在结构中使用。我不确定如何在结构中管理它。如何在这样的结构中实现 IDisposible?

4

1 回答 1

2

我有一个非托管类型的数组来存储数据。

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

我不确定如何在结构中管理它。如何在这样的结构中实现 IDisposible?

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

于 2020-04-28T09:22:57.080 回答