C#中的4位枚举

时间:2010-10-17 20:32:39

标签: c# interop struct pinvoke

我知道可以使用(:ulong,:uint,:ushort,:byte)使用有符号或无符号的64,32,16和8位值作为其基础valud类型的枚举。但是有可能创建一个4位枚举吗?

(我正在编写一些与C ++交互的代码,而我在C#中使用的返回类型的结构有一个最自然的字段作为4位结构。)

2 个答案:

答案 0 :(得分:4)

来自C#规范:

  

枚举的批准类型是   bytesbyteshortushort,   intuintlongulong

这些都不是4位类型。你在C ++方面也有同样的问题。

答案 1 :(得分:1)

  

但是有可能创建一个4位枚举吗?

不,主要是因为那会很尴尬和缓慢。从语法上讲,没有4位类型可以指定为基类型。

  

使用C ++和C#中的返回类型的结构有一个最自然的字段作为4位结构。

我对此非常怀疑,C ++可以处理位字段,但这非常有效(除了可能在空间中)。

使用C ++进行互操作是很困难的,当你选择返回类型时,不要让它变得比它更难。