我遇到了一些继承的枚举器uint
.我无法弄清楚为什么有人会这样做.
例:
Enum myEnum : uint { ... }
有人会这样做的任何优势或具体原因?为什么不把它作为defaultint?
如果枚举值大于2,147,483,647且非负数.
我猜它已经被允许自动转换为uint(在C中,枚举被类型系统视为int).很可能允许对枚举的标志值进行按位OR运算.请参阅http://www.velocityreviews.com/forums/t286596-enums-in-c-and-c.html
我能想到的一个原因是范围检查更容易.鉴于大多数枚举从0开始,您只需要检查上限.
在某些情况下使用.NET的COM Interop/P/Invoke时,这是方便且绝对必要的.例如,您肯定会在pinvoke.net上找到一些以这种方式定义的内容.在某些情况下,它只是更接近底层API定义,但不是必需的,但在某些情况下,底层API可能会使用其中一些高位作为标志,并且它将需要为UINT.在Interop之外,你可以在普通的C#/ VB.NET中使用一些非常高的位作为标志,这也可能需要uint.