无法在C#中隐式地将枚举转换为整数

Mar*_*mro 4 c# enums casting type-conversion

我可以使用整数作为值定义枚举:

public enum FieldType 
{
    Bar = 0,
    Foo = 1
}
Run Code Online (Sandbox Code Playgroud)

为什么C#不允许创建一个以整数为键的字典,并在创建时使用枚举值:

public Dictionary<int, Type> _fieldMapping = new Dictionary<int, Type>
{
    {FieldType.Bar, null},  # Error in VS
    {FieldType.Foo, null},  # Error in VS
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以做一个演员表,但是我想知道为什么当它实际上是int引擎盖时,enum无法隐式转换为int.

Jon*_*eet 8

如果你能做到这一点,你将失去使用枚举的一半 - 重点是将它们保持为单独的类型,以避免你犯错误涉及使用类型错误.

在我看来,像你的字典应该真正FieldType作为的关键-在这一点,你就会有一个更安全的方法.根据您当前的期望,您希望能够使用任何(int基于)的枚举类型作为键,包括FileShare明显不合适的内容.

所以基本上,你应该问自己,从根本上你是否有从字段类型到类型的地图,或者你是否真的有一个数字地图.换句话说,在没有查看的情况FieldType下,地图中的数字从1到有些Type意味着什么?1值代表什么?