这样做不会造成数据丢失,那么必须将枚举显式转换为int的原因是什么呢?
如果它是隐式的,会不会更直观,比如说您有一个更高级别的方法,例如:
PerformOperation ( OperationType.Silent type )
其中PerformOperation调用的裸作为这样的封装的C ++方法:
PerformOperation
_unmanaged_perform_operation ( int operation_type )
枚举有两种主要用法和不一致用法:
enum Medals { Gold, Silver, Bronze } [Flags] enum FilePermissionFlags { CanRead = 0x01, CanWrite = 0x02, CanDelete = 0x04 }
在第一种情况下,将这些东西视为数字是没有意义的。它们存储为整数的事实是实现细节。您不能在逻辑上加,减,乘或除金,银和青铜。
在第二种情况下,将这些东西视为数字 也 没有意义。您不能对它们进行加,减,乘或除。唯一明智的操作是按位操作。
枚举是糟糕的数字,因此您不应意外地将它们视为数字。