我有一些代码需要ulong
参数,并且通过使用映射字典将ulong映射到enum
中的值。然而,枚举包含对于所有意图的目的相同的值,所以这些都是以类似的方式在枚举重新分配后作为AfricanMango
在以下枚举:打印枚举值时发生意外输出
public enum Fruits
{
Banana = 0,
Strawberry,
Apple,
Peach,
Mango,
Berry,
AfricanMango = Mango,
Cranberry
}
这应该告诉编译器对AfricanMango
和Mango
使用相同的值,从设计的角度来看,这种实现是否真的有意义。
我的代码正在将输入转换为枚举值,并且在评估函数的结果时返回了Fruits.Cranberry
。这是我期待的价值。
然而,当随后使用该函数的结果(这在调试器权利是Fruits.Cranberry
),结果突然偏移到Fruits.Berry
,如可以通过运行下面的代码来证明:
var fruit = Fruits.Cranberry;
Console.WriteLine(fruit);
一个预计会输出Cranberry
,因为这是分配的值,但实际上这会输出Berry
。
这是预期的行为?基于它们之前的值,enums会被抬起头来,并且AfricanMango
搞乱了这个任务吗?
呃,我喜欢“我们讨厌你”功能>。<这需要编译器警告。 – PTwr