繁体   English   中英

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 中使用,而不是在 struct 中使用。 我不确定如何在结构中管理它。 如何在这样的结构中实现 IDisposible?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM