以字节为单位的枚举大小是多少?
public enum MMTPCnxNckRsn
{
MMTPCnxNckRsnNoAnswer = -2,
MMTPCnxNckRsnSendError = -1,
MMTPCnxNckRsnOk = 0,
MMTPCnxNckRsnInvalidMember = 1,
MMTPCnxNckRsnHubNotReady = 2,
MMTPCnxNckRsnUnknownMember = 3,
MMTPCnxNckRsnLastCnxTooRecent = 4,
MMTPCnxNckRsnInvalidVersion = 5,
MMTPCnxNckRsnInvalidOptions = 6,
MMTPCnxNckRsnTooManyCnx = 7
};
Run Code Online (Sandbox Code Playgroud)
我已经使用下面的代码找到它,但我认为它还不够......它是一个包含10个元素的字符串数组.我应该计算每个元素中的字符数,假设每个字符1个字节并添加所有字节的元素?那么无符号数呢?
var size = Enum.GetNames(typeof(MMTPCnxNckRsn)).Length;
var arr = Enum.GetNames(typeof (MMTPCnxNckRsn));
Run Code Online (Sandbox Code Playgroud)
我不确定是否重要的是提到我在marshalingc#的本机win32代码中间,并且找到用于管理内存中地址的枚举的大小是很重要的.
Dav*_*nan 17
该文件说:
枚举元素的默认基础类型是int.
因此,您的数据类型将具有4个字节的大小,这是int的大小.
您可以使用以下命令进行确认:
Marshal.SizeOf(Enum.GetUnderlyingType(typeof(MMTPCnxNckRsn)));
Run Code Online (Sandbox Code Playgroud)
虽然您使用名称引用源代码中的枚举值,但它们在计算机上作为整数值运行的代码中表示.所以你对字符串数组的评论是相当广泛的.
我也认为你过分思考尺寸问题.看看你最近的另一个问题,你似乎正在将一个C++结构转换为C#for pinvoke.好吧,C#enum将直接映射到C++枚举.pinvoke marshaller会照看尺码并为您准备.您不需要明确处理它.