内存布局方式——托管<=>非托管-数据传输(防止数据错乱)

非托管中如下定义,使用StructLayout、FieldOffset特性

并且项目还要启用允许不安全代码执行:修改项目的.csproj文件在PropertyGroup节点中添加一行<AllowUnsafeBlocks>true</AllowUnsafeBlocks>。

[StructLayout(LayoutKind.Explicit, Size = 40)]
public unsafe struct DataRecordT14_Rope : IRecord<int>, ITime
{
    public const int Length = 14;

    /// <summary>
    ///     段落位置
    /// </summary>
    [FieldOffset(0)] public int Index;

    /// <summary>
    ///     时间戳
    /// </summary>
    [FieldOffset(4)] public DateTime Time;

    /// <summary>
    ///     14路数据
    /// </summary>
    [FieldOffset(12)] public fixed ushort Data[Length];
}

 

posted @ 2024-09-02 16:07  黄立明02  阅读(1)  评论(0编辑  收藏  举报