我可以使用整数作为值定义枚举:
public enum FieldType
{
Bar = 0,
Foo = 1
}
为什么C#不允许创建一个以整数为键的字典,并在创建时使用枚举值:
public Dictionary<int, Type> _fieldMapping = new Dictionary<int, Type>
{
{FieldType.Bar, null}, # Error in VS
{FieldType.Foo, null}, # Error in VS
}
我知道我可以做一个演员表,但是我想知道为什么当enum实际上是int时,enum无法隐式转换为int。
答案 0 :(得分:8)
如果你能做到这一点,你根本就失去了使用枚举的一半 - 关键是要将它们作为单独的类型保留,以避免你犯错误涉及错误地使用类型。
在我看来,你的字典应该实际以int
作为关键 - 此时你有更安全的方法。根据您当前的期望,您希望能够使用任何(基于FileShare
)枚举类型作为密钥,包括明确FieldType
之类的内容不恰当的。
所以基本上,你应该问问自己,从根本上你是否有从字段类型到类型的地图,或者你是否真的有数字地图。换句话说,在没有查看Type
的情况下,地图中从数字1到某些{{1}}的条目是否意味着什么? 1值代表什么?