3
這是更多的問題,我要求瞭解而不是找出問題。考慮以下兩種:這兩個枚舉[標誌]聲明(C#)之間的區別是什麼
[Flags]
public enum Flags
{
NONE = 0x0,
PASSUPDATE = 0x1,
PASSRENDER = 0x2,
DELETE = 0x4,
ACCEPTINPUT = 0x8,
FADE_IN = 0x10,
FADE_OUT = 0x20,
FADE_OUT_COMPLETE = 0x40
}
[Flags]
public enum Flags
{
NONE = 0x0,
PASSUPDATE,
PASSRENDER,
DELETE,
ACCEPTINPUT,
FADE_IN ,
FADE_OUT,
FADE_OUT_COMPLETE
}
如果我使用後者枚舉類型的東西有點檢查有時是重疊的(我認爲像DELETE
被解釋爲PASSUPDATE | PASSRENDER
,而在第一個例子中的每個條目是獨立於其他的(即DELETE
只有DELETE
,不能使用一組不同的標誌的組合被證明)
顯示代碼,其中刪除被評估爲兩個Pass? – 2011-05-22 13:57:15
'[Flags]'屬性不會神奇地將枚舉轉換爲二進制枚舉。 – BoltClock 2011-05-22 13:58:36
你應該重新思考這個枚舉代表什麼。顯然,它開始代表一個狀態,淡入,淡出和淡入完成同時處於活動狀態沒有什麼意義。小心避免添加真正應該是單獨屬性的枚舉成員。現在刪除[標誌],問題解決了。 – 2011-05-22 15:36:13