一尘不染

为什么枚举要求显式转换为int类型?

c#

这样做不会造成数据丢失,那么必须将枚举显式转换为int的原因是什么呢?

如果它是隐式的,会不会更直观,比如说您有一个更高级别的方法,例如:

PerformOperation ( OperationType.Silent type )

其中PerformOperation调用的裸作为这样的封装的C ++方法:

_unmanaged_perform_operation ( int operation_type )

阅读 654

收藏
2020-05-19

共1个答案

一尘不染

枚举有两种主要用法和不一致用法:

enum Medals
{ Gold, Silver, Bronze }

[Flags]
enum FilePermissionFlags
{
    CanRead = 0x01,
    CanWrite = 0x02,
    CanDelete = 0x04
}

在第一种情况下,将这些东西视为数字是没有意义的。它们存储为整数的事实是实现细节。您不能在逻辑上加,减,乘或除金,银和青铜。

在第二种情况下,将这些东西视为数字 没有意义。您不能对它们进行加,减,乘或除。唯一明智的操作是按位操作。

枚举是糟糕的数字,因此您不应意外地将它们视为数字。

2020-05-19