我有一些代碼需要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