关于结构的封送,先看一个类 StructLayoutAttribute
该类的作用是,允许控制内存中类或结构的数据字段的物理布局。
该类的层次结构为:
System.Object System.AttributeSystem.Runtime.InteropServices.StructLayoutAttribute.
以下主要是在C/C++ 与 C#之间的结构体封送的说明
数据的布局:
在C/C++中定义有如下结构体:
typedef struct tagInetAddr_t
{
unsigned int;
unsigned short;
unsigned char[2];
}InetAddr_t
而在C#中要定义一个适用的结构体时,可以使用该类控制结构成员的布局情况,例:
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct tagInetAddr_t
{
/// unsigned int
public uint ip;
/// unsigned short
public ushort port;
/// unsigned char[2]

本文介绍了C#中的StructLayoutAttribute类,用于控制内存中类或结构的数据字段布局。讨论了LayoutKind.Sequential和LayoutKind.Explicit两种布局方式,并详细阐述了如何在C#中处理C/C++中的指针类型,以及在封送过程中的注意事项。
8398

被折叠的 条评论
为什么被折叠?



